home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / ms_sh21c.zip / sh.man < prev    next >
Text File  |  1992-12-15  |  151KB  |  2,689 lines

  1.  
  2.  
  3.  
  4.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           sh, rsh - shell, the standard/restricted command programming
  10.           language
  11.  
  12.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.           sssshhhh [ ----aaaacccceeeeffffhhhhiiiikkkknnnnmmmmrrrrssssttttuuuuvvvvxxxx0000RRRR ] [ args ]
  14.           rrrrsssshhhh [ ----aaaacccceeeeffffhhhhiiiikkkknnnnmmmmrrrrssssttttuuuuvvvvxxxx0000RRRR ] [ args ]
  15.  
  16.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.           _S_h is a command programming language that executes  commands
  18.           read from a terminal or a file.  _R_s_h is a restricted version
  19.           of the standard command interpreter _s_h; it is used to set up
  20.           login  names  and  execution environments whose capabilities
  21.           are more controlled than those of the standard  shell.   See
  22.           _I_n_v_o_c_a_t_i_o_n below for the meaning of arguments to the shell.
  23.  
  24.         DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
  25.           A _b_l_a_n_k is a tab or a  space.   A  _n_a_m_e  is  a  sequence  of
  26.           letters,  digits,  or underscores beginning with a letter or
  27.           underscore.  A _p_a_r_a_m_e_t_e_r is a name, a digit, or any  of  the
  28.           characters ****, @@@@, ####, ????, ----, $$$$, and !!!!.
  29.  
  30.         CCCCoooommmmmmmmaaaannnnddddssss
  31.           A _s_i_m_p_l_e-_c_o_m_m_a_n_d is a sequence of non-blank _w_o_r_d_s  separated
  32.           by _b_l_a_n_k_s.  The first word specifies the name of the command
  33.           to be executed.  Except as specified  below,  the  remaining
  34.           words  are  passed as arguments to the invoked command.  The
  35.           command name is passed as argument  0  (see  _e_x_e_c(2)).   The
  36.           _v_a_l_u_e   of  a  simple-command  is  its  exit  status  if  it
  37.           terminates normally, or (octal) 200+_s_t_a_t_u_s if it  terminates
  38.           abnormally (see _s_i_g_n_a_l(2) for a list of status values).
  39.  
  40.           A _p_i_p_e_l_i_n_e is a sequence of one or more  _c_o_m_m_a_n_d_s  separated
  41.           by |||| (or, for historical compatibility, by ^^^^).  The standard
  42.           output of each command  but  the  last  is  connected  by  a
  43.           _p_i_p_e(2)  to  the  standard  input of the next command.  Each
  44.           command is run as a separate process; the  shell  waits  for
  45.           the  last  command  to  terminate.   The  exit  status  of a
  46.           pipeline is the exit status of the last command.
  47.  
  48.           A _l_i_s_t is a sequence of one or more pipelines  separated  by
  49.           ;;;;,  &&&& (OS/2 only), &&&&&&&&, or ||||||||, and optionally terminated by ;;;;
  50.           or &&&& (OS/2 only).  Of these four symbols, ;;;; and &&&& have equal
  51.           precedence,  which  is  lower precedence than that of &&&&&&&& and
  52.           ||||||||.  The symbols &&&&&&&& and |||||||| also have  equal  precedence.   A
  53.           semicolon  (;;;;)  causes sequential execution of the preceding
  54.           pipeline; an ampersand (&&&&) causes asynchronous execution  of
  55.           the  preceding  pipeline  (i.e., the shell does not wait for
  56.           that command to finish.  This option is only available under
  57.           OS/2  and is restricted to single commands and not pipelines
  58.           because of the differences in  the  UNIX  and  OS/2  process
  59.           models).  The symbol &&&&&&&& (||||||||) causes the _l_i_s_t following it to
  60.  
  61.  
  62.  
  63.      Page 1                                         (printed 12/15/92)
  64.  
  65.  
  66.  
  67.  
  68.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  69.  
  70.  
  71.  
  72.           be executed only if the preceding pipeline  returns  a  zero
  73.           (non-zero)  exit  status.   An arbitrary number of new-lines
  74.           may appear in a _l_i_s_t,  instead  of  semicolons,  to  delimit
  75.           commands.
  76.  
  77.           A  _c_o_m_m_a_n_d  is  either  a  simple-command  or  one  of   the
  78.           following.  Unless otherwise stated, the value returned by a
  79.           command is that of the last simple-command executed  in  the
  80.           command.
  81.  
  82.           ffffoooorrrr _n_a_m_e [ iiiinnnn _w_o_r_d ... ] ddddoooo _l_i_s_t ddddoooonnnneeee
  83.                Each time a ffffoooorrrr command is executed, _n_a_m_e is set to the
  84.                next  _w_o_r_d taken from the iiiinnnn _w_o_r_d list.  If iiiinnnn _w_o_r_d ...
  85.                is omitted, then the ffffoooorrrr command executes the  ddddoooo  _l_i_s_t
  86.                once  for  each  positional  parameter that is set (see
  87.                _P_a_r_a_m_e_t_e_r _S_u_b_s_t_i_t_u_t_i_o_n  below).   Execution  ends  when
  88.                there are no more words in the list.
  89.  
  90.           sssseeeelllleeeecccctttt _n_a_m_e [ iiiinnnn _w_o_r_d ... ] ddddoooo _l_i_s_t ddddoooonnnneeee
  91.                A  sssseeeelllleeeecccctttt  command  prints  on  standard  error   (file
  92.                descriptor  2),  the  set  of _w_o_r_ds, each preceded by a
  93.                number.  If iiiinnnn _w_o_r_d ... is omitted, then the positional
  94.                parameters are used instead (see _P_a_r_a_m_e_t_e_r _S_u_b_s_t_i_t_u_t_i_o_n
  95.                below).  The PPPPSSSS3333 prompt is printed and a line  is  read
  96.                from  the standard input.  If this line consists of the
  97.                number of one of the listed _w_o_r_ds, then  the  value  of
  98.                the  parameter _n_a_m_e is set to the _w_o_r_d corresponding to
  99.                this number.  If this line is empty the selection  list
  100.                is printed again.  Otherwise the value of the parameter
  101.                _n_a_m_e is set to null.  The contents  of  the  line  read
  102.                from  standard  input  is saved in the parameter RRRREEEEPPPPLLLLYYYY.
  103.                The list is executed for each selection until  a  break
  104.                or end-of-file is encountered.
  105.  
  106.           ccccaaaasssseeee _w_o_r_d iiiinnnn [ _p_a_t_t_e_r_n [ | _p_a_t_t_e_r_n ] ... )))) _l_i_s_t ;;;;;;;; ] ... eeeessssaaaacccc
  107.                A  ccccaaaasssseeee  command  executes the _l_i_s_t associated with the
  108.                first _p_a_t_t_e_r_n that  matches  _w_o_r_d.   The  form  of  the
  109.                patterns  is  the  same  as  that  used  for  file-name
  110.                generation (see _F_i_l_e _N_a_m_e  _G_e_n_e_r_a_t_i_o_n)  except  that  a
  111.                slash,  a leading dot, or a dot immediately following a
  112.                slash need not be matched explicitly, and the match  is
  113.                case sensitive.
  114.  
  115.           iiiiffff _l_i_s_t tttthhhheeeennnn _l_i_s_t [ eeeelllliiiiffff _l_i_s_t tttthhhheeeennnn _l_i_s_t ] ... [ eeeellllsssseeee _l_i_s_t ] ffffiiii
  116.                The  _l_i_s_t following iiiiffff is executed and, if it returns a
  117.                zero exit status, the _l_i_s_t following the first tttthhhheeeennnn  is
  118.                executed.    Otherwise,  the  _l_i_s_t  following  eeeelllliiiiffff  is
  119.                executed and, if its value is zero, the _l_i_s_t  following
  120.                the next tttthhhheeeennnn is executed.  Failing that, the eeeellllsssseeee _l_i_s_t
  121.                is executed.  If no eeeellllsssseeee _l_i_s_t or tttthhhheeeennnn _l_i_s_t is executed,
  122.                then the iiiiffff command returns a zero exit status.
  123.  
  124.  
  125.  
  126.  
  127.      Page 2                                         (printed 12/15/92)
  128.  
  129.  
  130.  
  131.  
  132.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  133.  
  134.  
  135.  
  136.           wwwwhhhhiiiilllleeee _l_i_s_t ddddoooo _l_i_s_t ddddoooonnnneeee
  137.                A wwwwhhhhiiiilllleeee command repeatedly executes the wwwwhhhhiiiilllleeee _l_i_s_t and,
  138.                if  the  exit status of the last command in the list is
  139.                zero,  executes  the  ddddoooo  _l_i_s_t;  otherwise   the   loop
  140.                terminates.    If  no  commands  in  the  ddddoooo  _l_i_s_t  are
  141.                executed, then the wwwwhhhhiiiilllleeee command returns  a  zero  exit
  142.                status;  uuuunnnnttttiiiillll  may be used in place of wwwwhhhhiiiilllleeee to negate
  143.                the loop termination test.
  144.  
  145.           ((((_l_i_s_t))))
  146.                Execute _l_i_s_t in a sub-shell.  The shell creates  a  new
  147.                environment  in which to execute the _l_i_s_t, but does not
  148.                fork a sub-shell as a Unix system would.  The  original
  149.                environment is restored on completion.
  150.  
  151.           {{{{ _l_i_s_t;;;; }}}}
  152.                _l_i_s_t is simply executed.
  153.  
  154.           [[[[[[[[ _e_x_p_r_e_s_s_i_o_n ]]]]]]]]
  155.                Evaluates expression and returns  a  zero  exit  status
  156.                when  expression  is true.  See CCCCoooonnnnddddiiiittttiiiioooonnnnaaaallll EEEExxxxpppprrrreeeessssssssiiiioooonnnnssss
  157.                below, for a description of expression.  Note  that  [[[[[[[[
  158.                and ]]]]]]]] are keywords and require blanks between them and
  159.                expression.
  160.  
  161.           ffffuuuunnnnccccttttiiiioooonnnn _n_a_m_e  {{{{ _l_i_s_t;;;; }}}}
  162.  
  163.           _n_a_m_e (((()))) {{{{ _l_i_s_t;;;; }}}}
  164.                Define a function which is  referenced  by  _n_a_m_e.   The
  165.                body  of the function is the _l_i_s_t of commands between {{{{
  166.                and }}}}.  Execution of functions is described below  (see
  167.                _E_x_e_c_u_t_i_o_n).
  168.  
  169.           The following words are only recognized as the first word of
  170.           a command and when not quoted:
  171.  
  172.           iiiiffff tttthhhheeeennnn eeeellllsssseeee eeeelllliiiiffff ffffiiii ccccaaaasssseeee eeeessssaaaacccc ffffoooorrrr wwwwhhhhiiiilllleeee uuuunnnnttttiiiillll ddddoooo ddddoooonnnneeee  {{{{  }}}}
  173.           [[[[[[[[ ]]]]]]]]
  174.  
  175.         CCCCoooommmmmmmmeeeennnnttttssss
  176.           A word beginning  with  ####  causes  that  word  and  all  the
  177.           following characters up to a new-line to be ignored.
  178.  
  179.         AAAAlllliiiiaaaassssiiiinnnngggg
  180.           The first word of each command is replaced by the text of an
  181.           alias if an alias for this word has been defined.  The alias
  182.           name must a valid identifier.  The  replacement  string  can
  183.           contain  any valid Shell script including the metacharacters
  184.           listed above.   The  first  word  of  each  command  of  the
  185.           replaced text will not be tested for additional aliases.  If
  186.           the last character of the alias value is a  blank  then  the
  187.           word  following  the  alias  will  also be checked for alias
  188.  
  189.  
  190.  
  191.      Page 3                                         (printed 12/15/92)
  192.  
  193.  
  194.  
  195.  
  196.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  197.  
  198.  
  199.  
  200.           substitution.  Aliases  can  be  used  to  redefine  special
  201.           builtin commands but cannot be used to redefine the keywords
  202.           listed above.  Aliases can be created and  listed  with  the
  203.           aaaalllliiiiaaaassss command and can be removed with the uuuunnnnaaaalllliiiiaaaassss command.
  204.  
  205.           Aliasing is performed when scripts are read, not while  they
  206.           are  executed.   Therefore,  for an alias to take effect the
  207.           alias command has to be executed before  the  command  which
  208.           references the alias is read.
  209.  
  210.           Aliases are frequently used as a short hand  for  full  path
  211.           names.   An option to the aliasing facility allows the value
  212.           of the alias to be automatically set to the full pathname of
  213.           the corresponding command.  These aliases are called tracked
  214.           aliases.  The value of a tracked alias is defined the  first
  215.           time  the  corresponding  command  is  looked up and becomes
  216.           undefined each time  the  PATH  variable  is  reset.   These
  217.           aliases remain tracked so that the next subsequent reference
  218.           will redefine the value.
  219.  
  220.         CCCCoooonnnnddddiiiittttiiiioooonnnnaaaallll EEEExxxxpppprrrreeeessssssssiiiioooonnnnssss
  221.           A conditional  expression  is  used  with  the  [[[[[[[[  compound
  222.           command  to test attributes of files and to compare strings.
  223.           Word splitting and file name generation are not performed on
  224.           the  words  between  [[[[[[[[  and  ]]]]]]]].   Each  expression  can be
  225.           constructed from one or  more  of  the  following  unary  or
  226.           binary expressions:
  227.  
  228.                ----aaaa _f_i_l_e     True if _f_i_l_e exists.
  229.  
  230.                ----bbbb _f_i_l_e     True if _f_i_l_e exists and is a block  special
  231.                            file.
  232.  
  233.                ----cccc _f_i_l_e     True if _f_i_l_e  exists  and  is  a  character
  234.                            special file.
  235.  
  236.                ----dddd _f_i_l_e     True if _f_i_l_e exists and is a directory.
  237.  
  238.                ----ffff _f_i_l_e     True if _f_i_l_e exists and is a regular file.
  239.  
  240.                ----gggg _f_i_l_e     True if _f_i_l_e exists and has its setgid  bit
  241.                            set.
  242.  
  243.                ----hhhh _f_i_l_e     True if _f_i_l_e exists and is a symbolic link.
  244.  
  245.                ----kkkk _f_i_l_e     True if _f_i_l_e exists and has its sticky  bit
  246.                            set.
  247.  
  248.                ----nnnn _s_t_r_i_n_g   True if the length of _s_t_r_i_n_g is non-zero.
  249.  
  250.                ----oooo _o_p_t_i_o_n   True if the _o_p_t_i_o_n named is on.
  251.  
  252.  
  253.  
  254.  
  255.      Page 4                                         (printed 12/15/92)
  256.  
  257.  
  258.  
  259.  
  260.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  261.  
  262.  
  263.  
  264.                ----pppp _f_i_l_e     True if _f_i_l_e exists and is a  fifo  special
  265.                            file or a pipe.
  266.  
  267.                ----rrrr _f_i_l_e     True if _f_i_l_e exists and is readable.
  268.  
  269.                ----ssss _f_i_l_e     True if _f_i_l_e exists and has a size  greater
  270.                            than zero.
  271.  
  272.                ----tttt [ _f_i_l_d_e_s ]
  273.                            True if the open file whose file descriptor
  274.                            number   is   _f_i_l_d_e_s   (1  by  default)  is
  275.                            associated with a terminal device.
  276.  
  277.                ----uuuu _f_i_l_e     True if _f_i_l_e exists and has its setuid  bit
  278.                            set.
  279.  
  280.                ----wwww _f_i_l_e     True if _f_i_l_e exists and is writable.
  281.  
  282.                ----xxxx _f_i_l_e     True if _f_i_l_e exists and is executable.   If
  283.                            _f_i_l_e  exists  and  is a directory, then the
  284.                            current process has permission to search in
  285.                            the directory.
  286.  
  287.                ----zzzz _s_t_r_i_n_g   True if the length of _s_t_r_i_n_g is zero.
  288.  
  289.                ----LLLL _f_i_l_e     True if _f_i_l_e exists and is a symbolic link.
  290.  
  291.                ----OOOO _f_i_l_e     True if _f_i_l_e exists and  is  owned  by  the
  292.                            effective user id of this process.
  293.  
  294.                ----GGGG _f_i_l_e     True if _f_i_l_e exists and  is  owned  by  the
  295.                            effective user group of this process.
  296.  
  297.                ----SSSS _f_i_l_e     True if _f_i_l_e exists and is a socket.
  298.  
  299.                _f_i_l_e_1 ----nnnntttt _f_i_l_e_2
  300.                            True if file1 is newer than file2.  True if
  301.                            _f_i_l_e_1 exists and is newer than _f_i_l_e_2.
  302.  
  303.                _f_i_l_e_1 ----ooootttt _f_i_l_e_2
  304.                            True if _f_i_l_e_1  exists  and  is  older  than
  305.                            _f_i_l_e_2.
  306.  
  307.                _f_i_l_e_1 ----eeeeffff _f_i_l_e_2
  308.                            True if _f_i_l_e_1 and _f_i_l_e_2 and  refer  to  the
  309.                            same file.
  310.  
  311.                _s_1 ==== _s_2     True if strings _s_1 and _s_2 are identical.
  312.  
  313.                _s_1 !!!!==== _s_2    True  if  strings  _s_1  and   _s_2   are   _n_o_t
  314.                            identical.
  315.  
  316.  
  317.  
  318.  
  319.      Page 5                                         (printed 12/15/92)
  320.  
  321.  
  322.  
  323.  
  324.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  325.  
  326.  
  327.  
  328.                _s_1 <<<< _s_2     True if string _s_1 comes before _s_2 are based
  329.                            on the ASCII value of their characters.
  330.  
  331.                _s_1 >>>> _s_2     True if string _s_1 comes after _s_2 are  based
  332.                            on the ASCII value of their characters.
  333.  
  334.                _n_1 ----eeeeqqqq _n_2   True if _n_1 is equal to _n_2.
  335.  
  336.                _n_1 ----nnnneeee _n_2   True if _n_1 is not equal to _n_2.
  337.  
  338.                _n_1 ----lllltttt _n_2   True if _n_1 is less than to _n_2.
  339.  
  340.                _n_1 ----ggggtttt _n_2   True if _n_1 is greater than to _n_2.
  341.  
  342.                _n_1 ----lllleeee _n_2   True if _n_1 is less than or equal to _n_2.
  343.  
  344.                _n_1 ----ggggeeee _n_2   True if _n_1 is greater than or equal to _n_2.
  345.  
  346.           Not all of the above have meaning under MSDOS or  OS/2.   In
  347.           such  cases, the appropriate value is set (_f_a_l_s_e, except for
  348.           ----OOOO and ----GGGG).
  349.  
  350.           A  compound  expression  can  be  constructed   from   these
  351.           primitives   by  using  any  of  the  following,  listed  in
  352.           decreasing order of precedence.
  353.  
  354.                       (((( _e_x_p_r ))))
  355.                            True, if  _e_x_p_r  is  true.   Used  to  group
  356.                            expressions.
  357.  
  358.                       !!!! _e_x_p_r
  359.                            True, if _e_x_p_r is false.
  360.  
  361.                       _e_x_p_r_1 &&&&&&&& _e_x_p_r_2
  362.                            True, if _e_x_p_r_1 and _e_x_p_r_2 are both true.
  363.  
  364.                       _e_x_p_r_1 |||||||| _e_x_p_r_2
  365.                            True, if _e_x_p_r_1 or _e_x_p_r_2 is true.
  366.  
  367.         TTTTiiiillllddddeeee SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
  368.           Each word is checked to see if it begins with an  unquoted~~~~.
  369.           If  it  is,  the  ~~~~  is  replaced  by  the value of the HHHHOOOOMMMMEEEE
  370.           parameter. A ~~~~ followed by a ++++ or ---- is replaced by the value
  371.           of the parameter PPPPWWWWDDDD and OOOOLLLLDDDDPPPPWWWWDDDD respectively.
  372.  
  373.         CCCCoooommmmmmmmaaaannnndddd SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
  374.           The standard output from a command enclosed  in  parenthesis
  375.           preceded  by  a  dollar  sign  ($$$$(((())))),  or in a pair of grave
  376.           accents (````````) may be used as part or all of a word;  trailing
  377.           new-lines are removed.  The command substitution $$$$((((ccccaaaatttt _f_i_l_e))))
  378.           can be replaced by the equivalent but faster $$$$((((<<<<_f_i_l_e)))).
  379.  
  380.  
  381.  
  382.  
  383.      Page 6                                         (printed 12/15/92)
  384.  
  385.  
  386.  
  387.  
  388.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  389.  
  390.  
  391.  
  392.         PPPPaaaarrrraaaammmmeeeetttteeeerrrr SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
  393.           The  character  $$$$  is  used   to   introduce   substitutable
  394.           _p_a_r_a_m_e_t_e_r_s.   There  are two types of parameters, positional
  395.           and keyword.  If _p_a_r_a_m_e_t_e_r is a digit, it  is  a  positional
  396.           parameter.   Positional parameters may be assigned values by
  397.           sssseeeetttt.  Keyword parameters (also known as  variables)  may  be
  398.           assigned values by writing:
  399.  
  400.                _n_a_m_e = _v_a_l_u_e [ _n_a_m_e = _v_a_l_u_e ] ...
  401.  
  402.           Pattern-matching is not performed on _v_a_l_u_e.  There cannot be
  403.           a function and a variable with the same _n_a_m_e.
  404.  
  405.           Alternatively, named parameters can be assigned  values  and
  406.           attributes by using the typeset special command.
  407.  
  408.           $$$${{{{_p_a_r_a_m_e_t_e_r}}}}
  409.                The value, if any, of  the  _p_a_r_a_m_e_t_e_r  is  substituted.
  410.                The braces are required only when _p_a_r_a_m_e_t_e_r is followed
  411.                by a letter, digit, or underscore that  is  not  to  be
  412.                interpreted  as part of its name.  If _p_a_r_a_m_e_t_e_r is **** or
  413.                @@@@, all the positional parameters, starting with $$$$1111, are
  414.                substituted (separated by spaces).  Parameter $$$$0000 is set
  415.                from argument zero when the shell is invoked.
  416.  
  417.           $$$${{{{####_p_a_r_a_m_e_t_e_r}}}}
  418.                If _p_a_r_a_m_e_t_e_r is  ****  or  @@@@,  the  number  of  positional
  419.                parameters  is  substituted.   Otherwise, the length of
  420.                the value of the _p_a_r_a_m_e_t_e_r is substituted.
  421.  
  422.           $$$${{{{_p_a_r_a_m_e_t_e_r::::----_w_o_r_d}}}}
  423.                If _p_a_r_a_m_e_t_e_r is set and  is  non-null,  substitute  its
  424.                value; otherwise substitute _w_o_r_d.
  425.  
  426.           $$$${{{{_p_a_r_a_m_e_t_e_r::::====_w_o_r_d}}}}
  427.                If _p_a_r_a_m_e_t_e_r is not set or is null set it to _w_o_r_d;  the
  428.                value  of  the  parameter  is  substituted.  Positional
  429.                parameters may not be assigned to in this way.
  430.  
  431.           $$$${{{{_p_a_r_a_m_e_t_e_r::::????_w_o_r_d}}}}
  432.                If _p_a_r_a_m_e_t_e_r is set and  is  non-null,  substitute  its
  433.                value;  otherwise,  print _w_o_r_d and exit from the shell.
  434.                If _w_o_r_d is omitted, the message ``parameter null or not
  435.                set'' is printed.
  436.  
  437.           $$$${{{{_p_a_r_a_m_e_t_e_r::::++++_w_o_r_d}}}}
  438.                If _p_a_r_a_m_e_t_e_r is set and is non-null,  substitute  _w_o_r_d;
  439.                otherwise substitute nothing.
  440.  
  441.           $$$${{{{_p_a_r_a_m_e_t_e_r####_p_a_t_t_e_r_n}}}}
  442.                $$$${{{{_p_a_r_a_m_e_t_e_r########_p_a_t_t_e_r_n}}}} If the Shell _p_a_t_t_e_r_n matches  the
  443.                beginning  of the value of _p_a_r_a_m_e_t_e_r, then the value of
  444.  
  445.  
  446.  
  447.      Page 7                                         (printed 12/15/92)
  448.  
  449.  
  450.  
  451.  
  452.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  453.  
  454.  
  455.  
  456.                this substitution is the value of  the  _p_a_r_a_m_e_t_e_r  with
  457.                the  matched  portion  deleted;  otherwise the value of
  458.                this _p_a_r_a_m_e_t_e_r is substituted.  In the first  form  the
  459.                smallest  matching _p_a_t_t_e_r_n is deleted and in the latter
  460.                form the largest matching _p_a_t_t_e_r_n is deleted.
  461.  
  462.           $$$${{{{_p_a_r_a_m_e_t_e_r%%%%_p_a_t_t_e_r_n}}}}
  463.                $$$${{{{_p_a_r_a_m_e_t_e_r%%%%%%%%_p_a_t_t_e_r_n}}}} If the Shell _p_a_t_t_e_r_n matches  the
  464.                end  of  the value of _p_a_r_a_m_e_t_e_r, then the value of this
  465.                substitution is the value of  the  _p_a_r_a_m_e_t_e_r  with  the
  466.                matched  portion  deleted;  otherwise the value of this
  467.                _p_a_r_a_m_e_t_e_r  is  substituted.   In  the  first  form  the
  468.                smallest  matching _p_a_t_t_e_r_n is deleted and in the latter
  469.                form the largest matching _p_a_t_t_e_r_n is deleted.
  470.  
  471.           In the above, _w_o_r_d is not evaluated unless it is to be  used
  472.           as  the  substituted  string,  so  that,  in  the  following
  473.           example, ppppwwwwdddd is executed only if dddd is not set or is null:
  474.  
  475.                echo ${d:-`pwd`}
  476.  
  477.           If the colon (::::) is omitted from the above expressions,  the
  478.           shell only checks whether _p_a_r_a_m_e_t_e_r is set or not (_I_t _i_s _n_o_t
  479.           _c_l_e_a_r _w_h_a_t _t_h_i_s _m_e_a_n_s).
  480.  
  481.           The following parameters are automatically set by the shell:
  482.  
  483.                ####    The number of positional parameters in decimal.
  484.  
  485.                ----    Flags supplied to the shell on  invocation  or  by
  486.                     the sssseeeetttt command.
  487.  
  488.                ????    The   decimal   value   returned   by   the   last
  489.                     synchronously executed command.
  490.  
  491.                $$$$    The process number of this shell.
  492.  
  493.                !!!!    The process number of the last background  command
  494.                     invoked.
  495.  
  496.                ____    The last argument of the previous command.
  497.  
  498.                ~~~~    The shell reserves all variables beginning with  a
  499.                     ~~~~  for  its  own  internal use and these variables
  500.                     cannot be accessed by the user.
  501.  
  502.           The following parameters are used by the shell:
  503.  
  504.                CCCCDDDDPPPPAAAATTTTHHHH
  505.                     The search path for the _c_d  command.   (Note  that
  506.                     because  a  colon  is  used by MSDOS to indicate a
  507.                     drive, a semi-colon is used to separate  the  path
  508.  
  509.  
  510.  
  511.      Page 8                                         (printed 12/15/92)
  512.  
  513.  
  514.  
  515.  
  516.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  517.  
  518.  
  519.  
  520.                     names  instead  of a colon - this implies that the
  521.                     CDPATH variable must be set using single or double
  522.                     quotes to surround the value).
  523.  
  524.                CCCCOOOOLLLLUUUUMMMMNNNNSSSS
  525.                     This variable is contains the number of columns on
  526.                     the screen.
  527.  
  528.                CCCCOOOOMMMMSSSSPPPPEEEECCCC
  529.                     When the shell has to process  an  MSDOS  ._b_a_t  or
  530.                     OS/2  ._c_m_d  file, it expects the file indicated by
  531.                     the value of this environment variable  to  be  an
  532.                     executable program capable of processing the MSDOS
  533.                     ._b_a_t or OS/2 ._c_m_d file.  The  program  is  invoked
  534.                     with  the  arguments  ////cccc  ffffiiiilllleeee____nnnnaaaammmmeeee.   CCCCOOOOMMMMSSSSPPPPEEEECCCC  is
  535.                     parsed and split on white space to allow  addition
  536.                     parameters  to  be  passed  to  command processor.
  537.                     Thus the default environment size could be set  to
  538.                     1000 by setting to _c_o_m_m_a_n_d /_e:_1_0_0_0.
  539.  
  540.                EEEENNNNVVVV  If  this  parameter   is   set,   then   parameter
  541.                     substitution is performed on the value to generate
  542.                     the pathname of the script that will  be  executed
  543.                     when  the shell is invoked (See Invocation below).
  544.                     This file is typically used for alias and function
  545.                     definitions.
  546.  
  547.                EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____LLLLIIIINNNNEEEE
  548.                     This parameter pointers to a file  which  contains
  549.                     information  for the shell about how command lines
  550.                     are to be built for particular  external  programs
  551.                     and  how to convert from the format entered to the
  552.                     shell (see _C_o_m_m_a_n_d _L_i_n_e _B_u_i_l_d_i_n_g).
  553.  
  554.                FFFFCCCCEEEEDDDDIIIITTTT
  555.                     The default editor name for the fc command.
  556.  
  557.                HHHHIIIISSSSTTTTFFFFIIIILLLLEEEE
  558.                     The file where command  history  is  saved  across
  559.                     login    sessions.     The    default   value   is
  560.                     $$$$HHHHOOOOMMMMEEEE////hhhhiiiissssttttoooorrrryyyy....sssshhhh.
  561.  
  562.                HHHHIIIISSSSTTTTSSSSIIIIZZZZEEEE
  563.                     The  number  of  commands  normally   stored   for
  564.                     history, default 100.
  565.  
  566.                HHHHOOOOMMMMEEEE The default argument (home directory) for  the  _c_d
  567.                     command.
  568.  
  569.                IIIIFFFFSSSS  Internal field separators,  normally  ssssppppaaaacccceeee,  ttttaaaabbbb,
  570.                     and nnnneeeewwww----lllliiiinnnneeee.
  571.  
  572.  
  573.  
  574.  
  575.      Page 9                                         (printed 12/15/92)
  576.  
  577.  
  578.  
  579.  
  580.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  581.  
  582.  
  583.  
  584.                LLLLIIIINNNNEEEENNNNOOOO
  585.                     This variable contains the current line number  in
  586.                     the script being processed.
  587.  
  588.                LLLLIIIINNNNEEEESSSS
  589.                     This variable contains the number of lines on  the
  590.                     screen.
  591.  
  592.                MMMMAAAAIIIILLLL If this parameter is set to the  name  of  a  mail
  593.                     file  _a_n_d  the  MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH parameter is not set, the
  594.                     shell informs the user of the arrival of  mail  in
  595.                     the specified file.
  596.  
  597.                MMMMAAAAIIIILLLLCCCCHHHHEEEECCCCKKKK
  598.                     This parameter specifies how  often  (in  seconds)
  599.                     the  shell  will  check for the arrival of mail in
  600.                     the  files  specified  by  the  MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH  or  MMMMAAAAIIIILLLL
  601.                     parameters.   If  set  to  0, the shell will check
  602.                     before each prompt.
  603.  
  604.                MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH
  605.                     A semi-colon (;;;;) separated list of file names.  If
  606.                     this  parameter is set, the shell informs the user
  607.                     of the arrival of mail in  any  of  the  specified
  608.                     files.  Each  file name can be followed by %%%% and a
  609.                     message that will be printed when the modification
  610.                     time  changes.   The  default message is "_y_o_u _h_a_v_e
  611.                     _m_a_i_l".
  612.  
  613.                OOOOLLLLDDDDPPPPWWWWDDDD
  614.                     The previous  working  directory  set  by  the  ccccdddd
  615.                     command.
  616.  
  617.                OOOOPPPPTTTTAAAARRRRGGGG
  618.                     The value of the last option argument processed by
  619.                     the ggggeeeettttooooppppttttssss special command.
  620.  
  621.                OOOOPPPPTTTTIIIINNNNDDDD
  622.                     The index of the last option argument processed by
  623.                     the ggggeeeettttooooppppttttssss special command.
  624.  
  625.                PPPPAAAATTTTHHHH The  search  path  for  commands  (see   _E_x_e_c_u_t_i_o_n
  626.                     below).  The user may not change PPPPAAAATTTTHHHH if executing
  627.                     under _r_s_h.  (Note that because a colon is used  by
  628.                     MSDOS to indicate a drive, a semi-colon is used to
  629.                     separate the path names instead of a colon -  this
  630.                     implies  that  the PATH variable must be set using
  631.                     single or double quotes to  surround  the  value).
  632.                     The  Shell automatically converts Unix format PPPPAAAATTTTHHHH
  633.                     assignments to MSDOS format when  appropriate.   A
  634.                     assignment  is  converted  if  there  are no semi-
  635.                     colons, no \\\\s and one or more colons.  If there is
  636.  
  637.  
  638.  
  639.      Page 10                                        (printed 12/15/92)
  640.  
  641.  
  642.  
  643.  
  644.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  645.  
  646.  
  647.  
  648.                     only   one  colon,  it  must  not  be  the  second
  649.                     character of the new value.
  650.  
  651.                PPPPWWWWDDDD  The  present  working  directory  set  by  the  ccccdddd
  652.                     command.
  653.  
  654.                PPPPSSSS1111  Primary prompt string, by default ``$$$$ ''.
  655.  
  656.                PPPPSSSS2222  Secondary prompt string, by default ``>>>> ''.
  657.  
  658.                PPPPSSSS3333  Selection prompt string used within a select loop,
  659.                     ``####???? ''.
  660.  
  661.                PPPPSSSS4444  The  value  of  this  parameter  is  expanded  for
  662.                     parameter  substitution  and precedes each line of
  663.                     an execution trace.   If  omitted,  the  execution
  664.                     trace prompt is ``+ ''.
  665.  
  666.                RRRRAAAANNNNDDDDOOOOMMMM
  667.                     Each time this parameter is referenced,  a  random
  668.                     integer  is  generated.   The  sequence  of random
  669.                     numbers can be initialized by assigning a  numeric
  670.                     value to RRRRAAAANNNNDDDDOOOOMMMM.
  671.  
  672.                RRRREEEEPPPPLLLLYYYY
  673.                     This parameter is set by the sssseeeelllleeeecccctttt statement  and
  674.                     by  the rrrreeeeaaaadddd special command when no arguments are
  675.                     supplied.
  676.  
  677.                SSSSEEEECCCCOOOONNNNDDDDSSSS
  678.                     Each time this parameter is referenced, the number
  679.                     of seconds since shell invocation is returned.  If
  680.                     this parameter is assigned a value, then the value
  681.                     returned upon reference will be the value that was
  682.                     assigned plus the  number  of  seconds  since  the
  683.                     assignment.
  684.  
  685.                SSSSHHHHEEEELLLLLLLL
  686.                     When  the  shell  is   invoked,   it   scans   the
  687.                     environment (see _E_n_v_i_r_o_n_m_e_n_t below) for this name.
  688.                     If it is found and there is an  'r'  in  the  file
  689.                     name  part  of  its  value,  the  shell  becomes a
  690.                     restricted  shell.   The  shell  also  uses   this
  691.                     variable  to  decide  which  program  to  spawn to
  692.                     interpret shell scripts (see _E_x_e_c_u_t_i_o_n below).
  693.  
  694.                TTTTMMMMPPPP  The location of temporary  files  created  by  the
  695.                     shell.  If this variable is not defined, the Shell
  696.                     uses  the  HHHHOOOOMMMMEEEE  directory  for  temporary  files.
  697.                     Failing  that,  the  root directory of the current
  698.                     drive is used.
  699.  
  700.  
  701.  
  702.  
  703.      Page 11                                        (printed 12/15/92)
  704.  
  705.  
  706.  
  707.  
  708.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  709.  
  710.  
  711.  
  712.           The shell gives default values to  PPPPAAAATTTTHHHH,  PPPPSSSS1111,  PPPPSSSS2222,  SSSSHHHHEEEELLLLLLLL,
  713.           HHHHOOOOMMMMEEEE and IIIIFFFFSSSS.
  714.  
  715.         AAAArrrriiiitttthhhhmmmmeeeettttiiiicccc EEEExxxxppppaaaannnnssssiiiioooonnnn
  716.           A string of the form $$$$((((((((_e_x_p)))))))) is substitued with  the  value
  717.           of  the  arithemtic expression _e_x_p.  _e_x_p is treated as if it
  718.           were within single quotes.  See AAAArrrriiiitttthhhhmmmmeeeettttiiiicccc EEEEvvvvaaaalllluuuuaaaattttiiiioooonnnn below.
  719.  
  720.         BBBBllllaaaannnnkkkk IIIInnnntttteeeerrrrpppprrrreeeettttaaaattttiiiioooonnnn
  721.           After parameter and command  substitution,  the  results  of
  722.           substitution   are  scanned  for  internal  field  separator
  723.           characters (those found in  IIIIFFFFSSSS)  and  split  into  distinct
  724.           arguments  where  such  characters are found.  Explicit null
  725.           arguments ("""""""" or '''''''') are retained.  Implicit null  arguments
  726.           (those  resulting  from  _p_a_r_a_m_e_t_e_r_s that have no values) are
  727.           removed.
  728.  
  729.         FFFFiiiilllleeee NNNNaaaammmmeeee GGGGeeeennnneeeerrrraaaattttiiiioooonnnn
  730.           Following substitution, each command _w_o_r_d is scanned for the
  731.           characters  ****,  ???? and [[[[.  If one of these characters appears
  732.           the word is regarded as a _p_a_t_t_e_r_n.   The  word  is  replaced
  733.           with   alphabetically  sorted  file  names  that  match  the
  734.           pattern.  If no file name is found that matches the pattern,
  735.           the word is left unchanged.  The character .... at the start of
  736.           a file name or immediately following a ////,  as  well  as  the
  737.           character  ////  itself,  must  be  matched  explicitly.   When
  738.           matching patterns for file names, the shell ignores the case
  739.           of  the  pattern  and the file directory entries.  Generated
  740.           file names are always in lower case (for FAT file  systems).
  741.           Under HPFS on OS/2, case is preserved.
  742.  
  743.                ****    Matches any string, including the null string.
  744.  
  745.                ????    Matches any single character.
  746.  
  747.                [[[[ ............ ]]]]
  748.                     Matches any one of  the  enclosed  characters.   A
  749.                     pair  of  characters  separated  by  ---- matches any
  750.                     character lexically between the  pair,  inclusive.
  751.                     If the first character following the opening ``[''
  752.                     is a ````````!!!!'''''''' any character not enclosed is matched.
  753.  
  754.           If the shell has to open or  create  the  file  ////ddddeeeevvvv////ttttttttyyyy  or
  755.           ////ddddeeeevvvv////nnnnuuuullllllll (which are Unix special files), they are converted
  756.           to the equivalent MSDOS file names  (////ddddeeeevvvv////ccccoooonnnn  and  ////ddddeeeevvvv////nnnnuuuullll
  757.           respectively).    Any   user  programs  which  could  expect
  758.           ////ddddeeeevvvv////ttttttttyyyy or ////ddddeeeevvvv////nnnnuuuullllllll as arguments must do its  own  mapping
  759.           to the MSDOS equivalents.
  760.  
  761.           The shell checks for valid FAT filenames (single dot, not at
  762.           the beginning).  Invalid dots are converted to ~~~~.  A warning
  763.           message is displayed if the shell detects  an  invalid  file
  764.  
  765.  
  766.  
  767.      Page 12                                        (printed 12/15/92)
  768.  
  769.  
  770.  
  771.  
  772.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  773.  
  774.  
  775.  
  776.           name.
  777.  
  778.         QQQQuuuuoooottttiiiinnnngggg
  779.           The following characters have a special meaning to the shell
  780.           and cause termination of a word unless quoted:
  781.  
  782.                ;;;;  &&&&  ((((  ))))  ||||  ^^^^  <<<<  >>>>  nnnneeeewwww----lllliiiinnnneeee  ssssppppaaaacccceeee  ttttaaaabbbb
  783.  
  784.           A character may be _q_u_o_t_e_d (i.e., made to stand  for  itself)
  785.           by  preceding  it  with a \\\\.  The pair \\\\nnnneeeewwww----lllliiiinnnneeee is ignored.
  786.           All characters enclosed between a pair of single quote marks
  787.           (''''''''),  except  a  single  quote,  are quoted.  Inside double
  788.           quote marks (""""""""), parameter and command substitution  occurs
  789.           and  \\\\  quotes  the  characters  \\\\,  ````,  """",  and  $$$$. """"$$$$****"""" is
  790.           equivalent to """"$$$$1111 $$$$2222 ............"""", whereas  """"$$$$@@@@""""  is  equivalent  to
  791.           """"$$$$1111"""" """"$$$$2222"""" .............
  792.  
  793.         AAAArrrriiiitttthhhhmmmmeeeettttiiiicccc EEEEvvvvaaaalllluuuuaaaattttiiiioooonnnn
  794.           An ability to perform integer arithmetic  is  provided  with
  795.           the  special  command  lllleeeetttt.  Evaluations are performed using
  796.           _l_o_n_g arithmetic.  Constants are of the  form  [_b_a_s_e]_n  where
  797.           _b_a_s_e   is  a  decimal  number  between  two  and  thirty-six
  798.           representing the arithmetic base and _n is a number  in  that
  799.           base.  If [_b_a_s_e] is omitted then base 10 is used.
  800.  
  801.           An  arithmetic  expression  uses  nearly  the  same   syntax
  802.           precedence,  and  associatively  of  expression  as  C.  The
  803.           following set of operators, listed in  order  of  decreasing
  804.           precedence, have been implemented:
  805.  
  806.           - + ! ~ ++ --     unary    minus/plus,    logical     NOT,
  807.                             complement, {pre, post}{in,de}crement
  808.           &                 Logical AND
  809.           ^                 Logical XOR
  810.           |                 Logical OR
  811.           *  /  %           multiplication, division, remainder
  812.           +  -              addition, subtraction
  813.           << >>             Logical shift left and right
  814.           <=  >=  <  >      comparison
  815.           ==  !=            equality  inequality
  816.           &&                Logical AND
  817.           || ^^             Logical OR, XOR
  818.           ? :               Ternary operator
  819.           = += -=  *=  /=   assignement
  820.           %= &= ^= |= <<=
  821.           >>= &&= ||= ^^=
  822.  
  823.           The operators &&&&&&&&, ||||||||, &&&&&&&&==== and ||||||||==== are  short-circuiting  and
  824.           only one of the latter two expressions in a ternary operator
  825.           is evaluated.  Note the precedence of the logical  AND,  XOR
  826.           and OR operators.
  827.  
  828.  
  829.  
  830.  
  831.      Page 13                                        (printed 12/15/92)
  832.  
  833.  
  834.  
  835.  
  836.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  837.  
  838.  
  839.  
  840.           Sub-expressions in parentheses () are  evaluated  first  and
  841.           can be used to override the above precedence rules.
  842.  
  843.           Named  parameters  can  be  reference  by  name  within   an
  844.           expression without using the parameter substitution symtax.
  845.  
  846.           Since many of the arithmetic operators require  quoting,  an
  847.           alternative  form  of  the lllleeeetttt command is provided.  For any
  848.           command which begins with a ((((((((, all the characters  until  a
  849.           matching  ))))))))  are  treated  as  a  quoted  expression.  More
  850.           precisely, ((((((((............))))))))  is equivalent to lllleeeetttt """"............"""".
  851.  
  852.         PPPPrrrroooommmmppppttttiiiinnnngggg
  853.           When used interactively, the shell prompts with the value of
  854.           PPPPSSSS1111  before reading a command.  If at any time a new-line is
  855.           typed and further input is needed to complete a command, the
  856.           secondary prompt (i.e., the value of PPPPSSSS2222) is issued.
  857.  
  858.           Many people like to have the shell provide them with  useful
  859.           information in their prompt.  To accommodate this, the shell
  860.           recognises special sequences of characters in the values  of
  861.           PPPPSSSS1111 and PPPPSSSS2222, and substitutes the appropriate information for
  862.           them.  The special sequences and what they signify are:
  863.  
  864.                %%%%dddd   Place the current date, in the form  DAY  DD-MM-YY
  865.                     into the prompt.
  866.  
  867.                %%%%eeee   Place the current event number (as defined by  the
  868.                     hhhhiiiissssttttoooorrrryyyy  command)  into  the  prompt.   If history
  869.                     evaluation has been turned off (via  hhhhiiiissssttttoooorrrryyyy  ----dddd),
  870.                     no number will be substituted in (i.e. the %%%%eeee will
  871.                     be removed).
  872.  
  873.                %%%%nnnn   Place the current working drive into the prompt.
  874.  
  875.                %%%%pppp   Place  the  current  working  directory  into  the
  876.                     prompt.
  877.  
  878.                %%%%tttt   Place the current time of day, in the  form  HH:MM
  879.                     into  the prompt.  The time is on a 24 hour clock,
  880.                     i.e. 1:30 in the afternoon will be 13:30.
  881.  
  882.                %%%%vvvv   Place the MSDOS version number, in the form  MSDOS
  883.                     MM:MM into the prompt.
  884.  
  885.                %%%%%%%%   Place the character % into the prompt.
  886.  
  887.                \\\\xxxxxxxxxxxx Place the character _\_x_x_x  into  the  prompt.   The
  888.                     processing of escape sequences is the same as that
  889.                     for eeeecccchhhhoooo.
  890.  
  891.           Some of these facilities are of more use than others.
  892.  
  893.  
  894.  
  895.      Page 14                                        (printed 12/15/92)
  896.  
  897.  
  898.  
  899.  
  900.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  901.  
  902.  
  903.  
  904.         IIIInnnnppppuuuutttt////OOOOuuuuttttppppuuuutttt
  905.           Before a command is executed, its input and  output  may  be
  906.           redirected  using  a  special  notation  interpreted  by the
  907.           shell.  The following  may  appear  anywhere  in  a  simple-
  908.           command  or  may  precede  or  follow  a _c_o_m_m_a_n_d and are _n_o_t
  909.           passed on to the invoked command; substitution occurs before
  910.           _w_o_r_d or _d_i_g_i_t is used:
  911.  
  912.           <<<<wwwwoooorrrrdddd         Use  file  _w_o_r_d  as   standard   input   (file
  913.                         descriptor 0).
  914.  
  915.           >>>>wwwwoooorrrrdddd         Use  file  _w_o_r_d  as  standard   output   (file
  916.                         descriptor  1).  If the file does not exist it
  917.                         is created; otherwise, it is truncated to zero
  918.                         length.
  919.  
  920.           >>>>>>>>wwwwoooorrrrdddd        Use file _w_o_r_d as standard output.  If the file
  921.                         exists  output  is  appended  to  it (by first
  922.                         seeking to the  end-of-file);  otherwise,  the
  923.                         file is created.
  924.  
  925.           <<<<<<<<[----]wwwwoooorrrrdddd     The shell input is read up to a line  that  is
  926.                         the  same  as _w_o_r_d, or to an end-of-file.  The
  927.                         resulting document becomes the standard input.
  928.                         If   any  character  of  _w_o_r_d  is  quoted,  no
  929.                         interpretation is placed upon  the  characters
  930.                         of  the  document;  otherwise,  parameter  and
  931.                         command   substitution   occurs,   (unescaped)
  932.                         \\\\nnnneeeewwww----lllliiiinnnneeee  is  ignored,  and \\\\ must be used to
  933.                         quote the characters \\\\, $$$$, ````,  and  the  first
  934.                         character  of  _w_o_r_d.   If ---- is appended to <<<<<<<<,
  935.                         all leading tabs are stripped  from  _w_o_r_d  and
  936.                         from the document.
  937.  
  938.           <<<<&&&&ddddiiiiggggiiiitttt       Use the file associated with  file  descriptor
  939.                         _d_i_g_i_t  as  standard  input.  Similarly for the
  940.                         standard output using >>>>&&&&ddddiiiiggggiiiitttt.
  941.  
  942.           <<<<&&&&----           The standard input is closed.   Similarly  for
  943.                         the standard output using >>>>&&&&----.
  944.  
  945.           nnnn<<<<>>>>wwwwoooorrrrdddd       causes the file _w_o_r_d  to  be  opened  on  file
  946.                         descriptor  _n  for  both  reading and writing.
  947.                         The file must already exist.
  948.  
  949.           If any of the  above  is  preceded  by  a  digit,  the  file
  950.           descriptor  which  will  be associated with the file is that
  951.           specified by the digit (instead of the default 0 or 1).  For
  952.           example:
  953.  
  954.                ... 2>&1
  955.  
  956.  
  957.  
  958.  
  959.      Page 15                                        (printed 12/15/92)
  960.  
  961.  
  962.  
  963.  
  964.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  965.  
  966.  
  967.  
  968.           associates  file  descriptor  2  with  the  file   currently
  969.           associated with file descriptor 1.
  970.  
  971.           The  order  in   which   redirections   are   specified   is
  972.           significant.   The  shell  evaluates  redirections  left-to-
  973.           right.  For example:
  974.  
  975.                ... 1>_x_x_x 2>&1
  976.  
  977.           first associates  file  descriptor  1  with  file  _x_x_x.   It
  978.           associates  file  descriptor 2 with the file associated with
  979.           file descriptor 1 (i.e. _x_x_x).  If the order of  redirections
  980.           were  reversed,  file  descriptor 2 would be associated with
  981.           the terminal (assuming file descriptor 1 had been) and  file
  982.           descriptor 1 would be associated with file _x_x_x .
  983.  
  984.           The environment for the execution of a command contains  the
  985.           file  descriptors  of  the  invoking  shell  as  modified by
  986.           input/output specifications.
  987.  
  988.           Redirection of output  is  not  allowed  in  the  restricted
  989.           shell.
  990.  
  991.         EEEEnnnnvvvviiiirrrroooonnnnmmmmeeeennnntttt
  992.           The _e_n_v_i_r_o_n_m_e_n_t (see _e_n_v_i_r_o_n(5)) is  a  list  of  name-value
  993.           pairs  that is passed to an executed program in the same way
  994.           as a normal argument list.  The  shell  interacts  with  the
  995.           environment in several ways.  On invocation, the shell scans
  996.           the environment and creates a parameter for each name found,
  997.           giving it the corresponding value.  If the user modifies the
  998.           value of any of these parameters or creates new  parameters,
  999.           none  of  these  affects  the  environment unless the eeeexxxxppppoooorrrrtttt
  1000.           command is  used  to  bind  the  shell's  parameter  to  the
  1001.           environment  (see  also sssseeeetttt ----aaaa).  A parameter may be removed
  1002.           from  the  environment  with   the   uuuunnnnsssseeeetttt   command.    The
  1003.           environment seen by any executed command is thus composed of
  1004.           any unmodified name-value pairs originally inherited by  the
  1005.           shell,   minus   any   pairs  removed  by  uuuunnnnsssseeeetttt,  plus  any
  1006.           modifications or additions, all of which must  be  noted  in
  1007.           eeeexxxxppppoooorrrrtttt commands.
  1008.  
  1009.           The environment for any _s_i_m_p_l_e-_c_o_m_m_a_n_d may be  augmented  by
  1010.           prefixing  it  with  one  or more assignments to parameters.
  1011.           Thus:
  1012.  
  1013.                TERM=450                                            cmd
  1014.                args                                         and
  1015.                (export TERM; TERM=450; cmd args)
  1016.  
  1017.           are  equivalent  (as  far  as  the  execution  of   _c_m_d   is
  1018.           concerned).
  1019.  
  1020.  
  1021.  
  1022.  
  1023.      Page 16                                        (printed 12/15/92)
  1024.  
  1025.  
  1026.  
  1027.  
  1028.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1029.  
  1030.  
  1031.  
  1032.           If the ----kkkk flag is set, _a_l_l keyword arguments are  placed  in
  1033.           the  environment, even if they occur after the command name.
  1034.           The following first prints aaaa====bbbb cccc and cccc:
  1035.  
  1036.                echo a=b c
  1037.                set -k
  1038.                echo a=b c
  1039.  
  1040.         SSSSiiiiggggnnnnaaaallllssss
  1041.           The INTERRUPT and QUIT signals for an  invoked  command  are
  1042.           ignored  if  the command is followed by &&&&; otherwise signals
  1043.           have the values inherited by the shell from its parent, with
  1044.           the  exception  of  signal 11 (but see also the ttttrrrraaaapppp command
  1045.           below).
  1046.  
  1047.         CCCCoooommmmmmmmaaaannnndddd RRRReeee----eeeennnnttttrrrryyyy
  1048.           The text  of  the  last  HHHHIIIISSSSTTTTSSSSIIIIZZZZEEEE  (default:  100)  commands
  1049.           entered  from  a terminal device is saved in a _h_i_s_t_o_r_y file.
  1050.           The file $$$$HHHHOOOOMMMMEEEE////hhhhiiiissssttttoooorrrryyyy....sssshhhh is used if the  HHHHIIIISSSSTTTTFFFFIIIILLLLEEEE  variable
  1051.           is  not set.  The special command ffffcccc is used to list or edit
  1052.           a portion of this file.  The  portion  of  the  file  to  be
  1053.           edited  or listed can be selected by number or by giving the
  1054.           first character or characters  of  the  command.   A  single
  1055.           command  or  range  of commands can be specified.  If you do
  1056.           not specify an editor program as  an  argument  to  ffffcccc,  the
  1057.           value  of  the parameter FFFFCCCCEEEEDDDDIIIITTTT is used.  The edited command
  1058.           is printed and re-executed upon  leaving  the  editor.   The
  1059.           editor  name  ---- is used to skip the editing phase and to re-
  1060.           execute the command.  In this case a substitution  parameter
  1061.           of the form _o_l_d====_n_e_w can be used to modify the command before
  1062.           execution.  For example, if rrrr  is  aliased  to  ````ffffcccc  ----eeee  ----'''',
  1063.           typing  `rrrr  bbbbaaaadddd====ggggoooooooodddd  cccc' re-executes the most recent command
  1064.           that starts  with  the  letter  cccc  and  replaces  the  first
  1065.           occurrence of the string bbbbaaaadddd with the string ggggoooooooodddd.
  1066.  
  1067.         HHHHiiiissssttttoooorrrryyyy
  1068.           When reading input from an interactive terminal, a ``!''  at
  1069.           the  start  of  a  line  signals to the shell that it should
  1070.           attempt  to  perform  a  history  subsitution.   A   history
  1071.           subsitution  is a short-hand method which allows the user to
  1072.           recall a previous command for  execution  or  editing.   The
  1073.           recalled  command  is placed in the command line for editing
  1074.           or passing to the rest of the shell for  normal  processing.
  1075.           A history substitution takes the form:
  1076.  
  1077.                !!!! [ ! | _s_t_r | _n_u_m ] _t_e_r_m_i_n_a_t_o_r
  1078.  
  1079.           !!!!!!!! will place the previous  command  in  the  command  line.
  1080.           !!!!_n_u_m  will  place  the  history  command  with the specified
  1081.           number in the command line.  !!!!_s_t_r will find the most  recent
  1082.           command line that started with the characters in _s_t_r.
  1083.  
  1084.  
  1085.  
  1086.  
  1087.      Page 17                                        (printed 12/15/92)
  1088.  
  1089.  
  1090.  
  1091.  
  1092.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1093.  
  1094.  
  1095.  
  1096.           The _t_e_r_m_i_n_a_t_o_r determines what action is performed after the
  1097.           history  line  has  been  found.   If  the  original history
  1098.           command is entered using the <<<<rrrreeeettttuuuurrrrnnnn>>>> key, the  new  command
  1099.           line  is  passed directly to the shell.  If the <<<<eeeennnndddd>>>> key is
  1100.           pressed, the new command line can be edited  in  the  manner
  1101.           described below.
  1102.  
  1103.         CCCCoooommmmmmmmaaaannnndddd LLLLiiiinnnneeee EEEEddddiiiittttiiiinnnngggg
  1104.           When reading input from  an  interactive  terminal,  certain
  1105.           keystrokes  allow  the current input line to be edited.  The
  1106.           following  keystrokes   corresponding   to   the   following
  1107.           functions  are  defined  in  the initialisation file sssshhhh....iiiinnnniiii.
  1108.           The keywords in the initialisation file  which  provide  the
  1109.           functions are listed below:
  1110.  
  1111.           RRRRiiiigggghhhhtttt
  1112.                Move the cursor right one character
  1113.  
  1114.           WWWWoooorrrrddddRRRRiiiigggghhhhtttt
  1115.                Move the cursor right one word
  1116.  
  1117.           LLLLeeeefffftttt Move the cursor left one character
  1118.  
  1119.           WWWWoooorrrrddddLLLLeeeefffftttt
  1120.                Move the cursor left one word
  1121.  
  1122.           PPPPrrrreeeevvvviiiioooouuuussss
  1123.                Get the previous command from the history file
  1124.  
  1125.           NNNNeeeexxxxtttt Get the next command from the history file
  1126.  
  1127.           IIIInnnnsssseeeerrrrtttt
  1128.                Toggle insert/overwrite mode (note  the  shape  of  the
  1129.                cursor changes to indicate the current mode)
  1130.  
  1131.           DDDDeeeelllleeeetttteeeeRRRRiiiigggghhhhtttt
  1132.                Delete the current character unless the  cursor  is  at
  1133.                the end of line when no action is taken
  1134.  
  1135.           SSSSttttaaaarrrrtttt
  1136.                Move the cursor to the start of the command
  1137.  
  1138.           CCCCoooommmmpppplllleeeetttteeee
  1139.                Attempt to complete the filename.  The  shell  attempts
  1140.                to  complete  the  file  name  at  the  current  cursor
  1141.                position.  The file name is delimited  by  white  space
  1142.                characters.   If  the  shell  is unable to complete the
  1143.                file name (ie no match can be found in the  appropriate
  1144.                directory),  the  bell  is  rung.  If a single match is
  1145.                found, the new file name  is  displayed.   If  multiple
  1146.                matches  are  found,  the  file name is replaced by the
  1147.                longest non-unique part of the file name and  the  bell
  1148.  
  1149.  
  1150.  
  1151.      Page 18                                        (printed 12/15/92)
  1152.  
  1153.  
  1154.  
  1155.  
  1156.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1157.  
  1158.  
  1159.  
  1160.                is rung.
  1161.  
  1162.           EEEEnnnndddd  Move the cursor to the end of the command,  unless  the
  1163.                first  character  of  the command is a !!!!, in which case
  1164.                the appropriate history search is done.  The cursor  is
  1165.                placed at the end of the command line.
  1166.  
  1167.           FFFFlllluuuusssshhhh
  1168.                Delete to the end of the line
  1169.  
  1170.           SSSSccccaaaannnnBBBBaaaacccckkkkwwwwaaaarrrrdddd
  1171.                Search backwards from the current history  command  for
  1172.                the  next match against the last history request or the
  1173.                string currently in the command line if there has  been
  1174.                no previous history request.
  1175.  
  1176.           SSSSccccaaaannnnFFFFoooorrrreeeewwwwaaaarrrrdddd
  1177.                Search forewards from the current history  command  for
  1178.                the  next match against the last history request or the
  1179.                string currently in the command line if there has  been
  1180.                no previous history request.
  1181.  
  1182.           CCCClllleeeeaaaarrrr
  1183.                Erase the complete line.
  1184.  
  1185.           CCCClllleeeeaaaarrrrSSSSccccrrrreeeeeeeennnn
  1186.                Clears the complete  screen.   This  function  is  only
  1187.                available under OS/2.
  1188.  
  1189.           DDDDiiiirrrreeeeccccttttoooorrrryyyy
  1190.                Display the  file  name  list  matching  the  partially
  1191.                entered  file name under the cursor.  If no matches are
  1192.                found  the  bell  is  rung.   To  display   the   whole
  1193.                directory, enter the directory name followed by a slash
  1194.                ////.  After the directory listing has been displayed, the
  1195.                entered command line is redisplayed.
  1196.  
  1197.           DDDDeeeelllleeeetttteeeeLLLLeeeefffftttt
  1198.                Delete the character to the left of the cursor.
  1199.  
  1200.           RRRReeeettttuuuurrrrnnnn
  1201.                Execute the command line, unless the first character of
  1202.                the  command  is  a  !!!!,  in  which case the appropriate
  1203.                history processing is done.  _T_h_i_s  _i_s  _t_h_e  _a_c_t_u_a_l  _k_e_y
  1204.                _p_r_e_s_s_e_d  _a_n_d  _c_a_n_n_o_t  _b_e _m_o_d_i_f_i_e_d _b_y _t_h_e _i_n_i_t_i_a_l_i_s_a_t_i_o_n
  1205.                _f_i_l_e.
  1206.  
  1207.           JJJJoooobbbbssss Print a list of the child processes of the shell.  This
  1208.                function is only available under OS/2.
  1209.  
  1210.           TTTTrrrraaaannnnssssppppoooosssseeee
  1211.                Transpose the two characters under the cursor.
  1212.  
  1213.  
  1214.  
  1215.      Page 19                                        (printed 12/15/92)
  1216.  
  1217.  
  1218.  
  1219.  
  1220.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1221.  
  1222.  
  1223.  
  1224.           QQQQuuuuooootttteeee
  1225.                Disable any special processing for the next keystroke.
  1226.  
  1227.         IIIInnnniiiittttiiiiaaaalllliiiissssaaaattttiiiioooonnnn FFFFiiiilllleeee
  1228.           When the shell is run in interactive mode, the Command  Line
  1229.           Editing  keys  and  other  user configuration parameters are
  1230.           read from the initialisation file _s_h._i_n_i.  This shell  looks
  1231.           for  this  file  in  the same directory as the sssshhhh executable
  1232.           which is running.  It does not  use  the  SSSSHHHHEEEELLLLLLLL  environment
  1233.           variable  or  search the directories in the PPPPAAAATTTTHHHH environment
  1234.           variable.  At present, there are two types of entry in  this
  1235.           file:  keyboard  configuration;  and  others.   The entry is
  1236.           contained in a single line and consists  of  a  keyword  (in
  1237.           upper  or lower case), white space, an equals symbols, white
  1238.           space and one or two numeric values (see  _s_t_r_t_o_l  for  valid
  1239.           formats where _b_a_s_e parameter is zero), followed by an end of
  1240.           line character.
  1241.  
  1242.           For the keyboard entries, the numeric values give the  MSDOS
  1243.           Function  8  (Console  Input without Echo) return values for
  1244.           that  entry.   Note  that  extended  codes  (function  keys)
  1245.           require  two calls to this function.  The first call returns
  1246.           zero and the second the extended code.  In the configuration
  1247.           file,  a  first  numeric  value of zero indicates a extended
  1248.           code and must be followed by a second value.  The shell also
  1249.           supports  the use of the AAAALLLLTTTT _k_e_y _i_n _c_o_m_b_i_n_a_t_i_o_n _w_i_t_h _a_n_o_t_h_e_r
  1250.           _k_e_y.  _I_n _t_h_i_s _c_a_s_e, _t_h_e  _f_i_r_s_t  _v_a_l_u_e  _c_o_n_t_a_i_n_s  0000xxxxffffffff,  that
  1251.           selects AAAALLLLTTTT key, and the second key contains the appropriate
  1252.           scan code for the key required.  The program sssshhhhoooowwwwkkkkeeeeyyyy can  be
  1253.           used to determine the scan codes required.
  1254.  
  1255.           A non-zero first numeric  value  must  not  be  followed  by
  1256.           anything else on the line.
  1257.  
  1258.           Other entries must only have  one  numeric  value.   A  zero
  1259.           value disables the function and a non-zero value enables the
  1260.           function.  At present, there are two other functions:
  1261.  
  1262.           BBBBeeeellllllll Enable/disable warning bells
  1263.  
  1264.           HHHHaaaallllffffHHHHeeeeiiiigggghhhhtttt
  1265.                Use full or halfheight block cursor to indicate  Insert
  1266.                mode
  1267.  
  1268.           IIIInnnnsssseeeerrrrttttMMMMooooddddeeee
  1269.                Set the default insert mode on or off
  1270.  
  1271.           IIIInnnnsssseeeerrrrttttCCCCuuuurrrrssssoooorrrr
  1272.                Enable/disable the insert mode cursor.
  1273.  
  1274.           RRRRoooooooottttDDDDrrrriiiivvvveeee
  1275.                Determines  the  root  drive   from   which   to   read
  1276.  
  1277.  
  1278.  
  1279.      Page 20                                        (printed 12/15/92)
  1280.  
  1281.  
  1282.  
  1283.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1284.  
  1285.  
  1286.  
  1287.                /_e_t_c/_p_r_o_f_i_l_e.
  1288.  
  1289.           EEEEOOOOFFFFKKKKeeeeyyyy
  1290.                Determines the End-of-File key.
  1291.  
  1292.           Invalid lines or lines beginning with a #### are ignored.
  1293.  
  1294.           The following table gives the list  of  valid  keywords  and
  1295.           their default values:
  1296.           _________________________________________________________________________
  1297.            Keyword            First numeric   Second numeric   Actual Key
  1298.           _________________________________________________________________________
  1299.            KEYBOARD ENTRIES
  1300.            ScanBackward       0               0x49             PAGE UP
  1301.            ScanForeward       0               0x51             PAGE DOWN
  1302.            Previous           0               0x48             UP ARROW
  1303.            Next               0               0x50             DOWN ARROW
  1304.            Left               0               0x4b             LEFT ARROW
  1305.            Right              0               0x4d             RIGHT ARROW
  1306.            WordRight          0               0x74             Control RIGHT ARROW
  1307.            WordLeft           0               0x73             Control LEFT ARROW
  1308.            Start              0               0x47             HOME
  1309.            Clear              0               0x76             Control PAGE DOWN
  1310.            Flush              0               0x75             Control END
  1311.            End                0               0x4f             END
  1312.            Insert             0               0x52             INSERT
  1313.            DeleteRight        0               0x53             DELETE
  1314.            DeleteLeft         0x08                             BACKSPACE
  1315.            Complete           0               0x77             Control HOME
  1316.            Directory          0               0x0f             Shift TAB
  1317.            ClearScreen        0               0x84             Control PAGE UP
  1318.            Jobs               0               0x68             ALT F1
  1319.            Transpose          0x14                             Control T
  1320.            Quote              0x11                             Control Q
  1321.           _________________________________________________________________________
  1322.            OTHER FUNCTIONS
  1323.            Bell               0
  1324.            HalfHeight         0
  1325.            InsertMode         0
  1326.            InsertCursor       1
  1327.            RootDrive          3
  1328.            EOFKey             0x1a
  1329.           _________________________________________________________________________
  1330.  
  1331.         EEEExxxxeeeeccccuuuuttttiiiioooonnnn
  1332.           Each time a command is executed, the above substitutions are
  1333.           carried out.  If the command name matches one of the _S_p_e_c_i_a_l
  1334.           _C_o_m_m_a_n_d_s listed below, it is executed in the shell  process.
  1335.           If  the  command  name does not match a _S_p_e_c_i_a_l _C_o_m_m_a_n_d, but
  1336.           matches the name of a  defined  function,  the  function  is
  1337.           executed  in  the  shell process (note how this differs from
  1338.           the  execution  of  shell   procedures).    The   positional
  1339.           parameters  $$$$1111,  $$$$2222,  ....   are set to the arguments of the
  1340.  
  1341.  
  1342.  
  1343.      Page 21                                        (printed 12/15/92)
  1344.  
  1345.  
  1346.  
  1347.  
  1348.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1349.  
  1350.  
  1351.  
  1352.           function.  If the command name  matches  neither  a  _S_p_e_c_i_a_l
  1353.           _C_o_m_m_a_n_d nor the name of a defined function, a new process is
  1354.           created and an attempt is made to execute  the  command  via
  1355.           _e_x_e_c(2).
  1356.  
  1357.           The shell parameter PPPPAAAATTTTHHHH defines the  search  path  for  the
  1358.           directory  containing  the  command.   Alternative directory
  1359.           names are separated by a semi-colon (;;;;).  The  default  path
  1360.           is  ....;;;;cccc::::////bbbbiiiinnnn;;;;cccc::::////uuuussssrrrr////bbbbiiiinnnn  (specifying  the current directory,
  1361.           cccc::::////bbbbiiiinnnn, and cccc::::////uuuussssrrrr////bbbbiiiinnnn,  in  that  order).   Note  that  the
  1362.           current  directory  is  specified by a null path name, which
  1363.           can appear immediately after the equal sign or  between  the
  1364.           semi-colon  delimiters  anywhere  else in the path list.  If
  1365.           the command name contains a //// or starts with xxxx:::: (where x  is
  1366.           a  drive  letter) the search path is not used; such commands
  1367.           will not be executed by the  restricted  shell.   Otherwise,
  1368.           each  directory  in  the  path is searched for an executable
  1369.           file.  Executable files are indicated  by  a  .exe  or  .com
  1370.           extension.   This extension is automatically supplied by the
  1371.           shell and not have to be entered by the user.
  1372.  
  1373.           If the file with a .com or .exe extension cannot be found in
  1374.           the  directory,  the file is opened and first 512 characters
  1375.           are read.  If there are no characters in the  block  with  a
  1376.           value  in  the  range  0  to  7, the file is assumed to be a
  1377.           script file containing shell commands.  Note that the  shell
  1378.           will  check  the  file and if that file does not exist or is
  1379.           not a script, it will try the file with an extension of ....sssshhhh.
  1380.           If a ....sssshhhh file is found, that will be processed.  A sub-shell
  1381.           (given by the environment variable SSSSHHHHEEEELLLLLLLL) is spawned to read
  1382.           it.
  1383.  
  1384.           If the script file starts with the a line  of  the  form  #!
  1385.           _i_n_t_e_r_p_r_e_t_e_r  [_a_r_g_u_m_e_n_t_s], the interpreter is invoked instead
  1386.           of the shell to process the script.  Optional arguments  can
  1387.           be  supplied  in the script file which are passed before the
  1388.           name of the script file.  Thus, if the file  _d_e_m_o  contained
  1389.           the following string as the first line
  1390.  
  1391.                #! perl -sP
  1392.  
  1393.           Entering _d_e_m_o _n_a_m_e would be equivalent to entering the  _p_e_r_l
  1394.           -_s_P  _n_a_m_e  at  the  command  prompt.   Note  that  no  other
  1395.           processing of the first line other that the  separation  (by
  1396.           white space) into arguments is done.
  1397.  
  1398.           If none of the above conditions for a  executable  file  are
  1399.           detected  and  a  file  with  a .bat extension exists in the
  1400.           directory,  the  command  processor  given  by  the  CCCCOOOOMMMMSSSSPPPPEEEECCCC
  1401.           environment  variable  is spawned to process the file.  This
  1402.           is normally the standard MSDOS _c_o_m_m_a_n_d._c_o_m or  OS/2  _c_m_d._e_x_e
  1403.           processor.
  1404.  
  1405.  
  1406.  
  1407.      Page 22                                        (printed 12/15/92)
  1408.  
  1409.  
  1410.  
  1411.  
  1412.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1413.  
  1414.  
  1415.  
  1416.           A parenthesized command is also executed in a sub-shell.
  1417.  
  1418.         CCCCoooommmmmmmmaaaannnndddd LLLLiiiinnnneeee BBBBuuuuiiiillllddddiiiinnnngggg
  1419.           The file pointed to by the EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____LLLLIIIINNNNEEEE parameter  contains
  1420.           information  which  instructs the shell on how to create the
  1421.           command line for a particular program from  the  information
  1422.           entered  to  the shell.  If the program name is not found in
  1423.           this file, the standard MSDOS or OS/2  mechanisms  are  used
  1424.           with no special processing.
  1425.  
  1426.           The file is scanned prior to the execution  of  an  external
  1427.           command.   An  entry  in  this file is contained in a single
  1428.           line and consists of a  program  name  (in  upper  or  lower
  1429.           case),  white  space,  an equals symbol, white space and the
  1430.           program  type  followed  by  up  to  four  optional  values,
  1431.           followed  by  an end of line character.  The vvvvaaaalllluuuueeee tells the
  1432.           shell how to build the command line and the optional  values
  1433.           provide additional information.  The valid pppprrrrooooggggrrrraaaammmm ttttyyyyppppeeeessss are
  1434.           (note that invalid entries cause a line to be ignored) given
  1435.           below.   These  pppprrrrooooggggrrrraaaammmm ttttyyyyppppeeeessss must appear as the first value
  1436.           following the _e_q_u_a_l_s.   Otherwise,  they  are  ignored.   An
  1437.           empty  pppprrrrooooggggrrrraaaammmm ttttyyyyppppeeeessss may be empty to only select one or more
  1438.           of the optional values.
  1439.  
  1440.           Under OS/2, by default the shell generates the command  line
  1441.           using   the   format  specified  by  Eberhard  Mattes's  EMX
  1442.           interface.  This is makes no difference to programs which do
  1443.           not support the interface.
  1444.  
  1445.                uuuunnnniiiixxxx This program can process the  command  line  using
  1446.                     the  indirect  command  file  character @@@@.  When a
  1447.                     program, which can process this  format,  finds  a
  1448.                     command  line  parameter  starting with a @@@@ in the
  1449.                     command line, it treats the rest of the  parameter
  1450.                     as  a  file  and reads the command line parameters
  1451.                     from that file (one per  line,  the  end  of  line
  1452.                     characters can be escaped by preceeding with a \\\\).
  1453.                     Examples  of  this   functionality   include   the
  1454.                     Standard LLLLiiiinnnnkkkkeeeerrrr and LLLLiiiibbbbrrrraaaarrrriiiiaaaannnn.
  1455.  
  1456.                     The file name is set up in UNIX format (using //// as
  1457.                     the directory separators).
  1458.  
  1459.                     This functionality allows the user  to  get  round
  1460.                     the  127  byte command line length limit of MSDOS.
  1461.                     A sample version of the code to process wild cards
  1462.                     and  indirect  command  files is included with the
  1463.                     source of the shell in the file _s_t_d_a_r_g_v._c.
  1464.  
  1465.                ddddoooossss  This program can process the  command  line  using
  1466.                     the  indirect  command file character @@@@.  The file
  1467.                     name is set up in DOS  format  (using  \\\\s  as  the
  1468.  
  1469.  
  1470.  
  1471.      Page 23                                        (printed 12/15/92)
  1472.  
  1473.  
  1474.  
  1475.  
  1476.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1477.  
  1478.  
  1479.  
  1480.                     directory separators).
  1481.  
  1482.                eeeennnnvvvviiiirrrroooonnnn
  1483.                     The command line is passed to the external program
  1484.                     in the environment variable specified by the first
  1485.                     optional value.  The optional second  value  which
  1486.                     is   numeric,   gives   the   parameter  separator
  1487.                     character to be used (see _s_t_r_t_o_l for valid formats
  1488.                     where  _b_a_s_e  parameter  is  zero).  If this second
  1489.                     value is missing or evaluates to  zero,  space  is
  1490.                     used.
  1491.  
  1492.           The following optional values described below  may  be  used
  1493.           after either uuuunnnniiiixxxx or ddddoooossss or by themselves:
  1494.  
  1495.                sssswwwwiiiittttcccchhhh
  1496.                     The  optional  value  sssswwwwiiiittttcccchhhh  causes  the  program
  1497.                     parameters  to  be  converted  from UUUUNNNNIIIIXXXX format to
  1498.                     MMMMSSSSDDDDOOOOSSSS  format.    This   means   that   parameters
  1499.                     beginning with an ---- have it converted to a ////.  For
  1500.                     all other parameters,  ////s  are  converted  to  \\\\s.
  1501.                     This option is not applied to quoted parameters or
  1502.                     escaped characters.
  1503.  
  1504.                     This functionality allows ease of entry  of  MSDOS
  1505.                     commands  which  expect MSDOS directory separators
  1506.                     which  the  shell  interpretes   as   the   escape
  1507.                     character  (not  that  the underlying MSDOS really
  1508.                     cares).  eeeexxxxppppoooorrrrtttt The optional value  eeeexxxxppppoooorrrrtttt  causes
  1509.                     the  marked  environment variables to be converted
  1510.                     from  UUUUNNNNIIIIXXXX  format  to  MMMMSSSSDDDDOOOOSSSS  format.   This   is
  1511.                     equivalent to setting the -m flag for this program
  1512.                     only.
  1513.  
  1514.                nnnnooooeeeexxxxppppaaaannnndddd
  1515.                     The optional value  nnnnooooeeeexxxxppppaaaannnndddd  disables  file  name
  1516.                     generation  when  building  the command line (also
  1517.                     see sssseeeetttt command).
  1518.  
  1519.                nnnnoooosssswwwwaaaapppp
  1520.                     The optional value nnnnoooosssswwwwaaaapppp  disables  swapping  for
  1521.                     the  command.   This may speed up the execution of
  1522.                     small commands.
  1523.  
  1524.         FFFFuuuunnnnccccttttiiiioooonnnnssss
  1525.           The ffffuuuunnnnccccttttiiiioooonnnn keyword,  described  in  the  CCCCoooommmmmmmmaaaannnnddddssss  section
  1526.           above,  is  used to define shell functions.  Shell functions
  1527.           are read in and stored internally.  Alias names are resolved
  1528.           when  the  function  is  read.   Functions are executed like
  1529.           commands with the arguments passed as positional parameters.
  1530.           (See EEEExxxxeeeeccccuuuuttttiiiioooonnnn above).
  1531.  
  1532.  
  1533.  
  1534.  
  1535.      Page 24                                        (printed 12/15/92)
  1536.  
  1537.  
  1538.  
  1539.  
  1540.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1541.  
  1542.  
  1543.  
  1544.           Functions execute in the same  process  as  the  caller  and
  1545.           share  all  files  and  present  working  directory with the
  1546.           caller.  Traps caught by  the  caller  are  reset  to  their
  1547.           default  action  inside the function.  A trap condition that
  1548.           is not caught or ignored by the function causes the function
  1549.           to  terminate  and  the  condition  to  be  passed on to the
  1550.           caller.  A trap set on EXIT inside a  function  is  executed
  1551.           after the function completes.
  1552.  
  1553.           Ordinarily, variables are shared between the calling program
  1554.           and the function.  However, the ttttyyyyppppeeeesssseeeetttt special command used
  1555.           within  a  function  defines  local  variables  whose  scope
  1556.           includes the current function and all functions it calls.
  1557.  
  1558.           The special command rrrreeeettttuuuurrrrnnnn is used to return  from  function
  1559.           calls.   Errors  within  functions  return  control  to  the
  1560.           caller.
  1561.  
  1562.           Function identifiers can be listed with the ffffuuuunnnnccccttttiiiioooonnnn special
  1563.           command.   The  text  of  functions  will  also  be  listed.
  1564.           Function  can  be  undefined  with  the  uuuunnnnffffuuuunnnnccccttttiiiioooonnnn  special
  1565.           command.
  1566.  
  1567.           Ordinarily, functions are unset when the  shell  executes  a
  1568.           shell  script.   Functions  that  need  to be defined across
  1569.           separate invocations of the shell should be  placed  in  the
  1570.           EEEENNNNVVVV file.
  1571.  
  1572.         JJJJoooobbbbssss
  1573.           Under OS/2, an interactive shell associates a _j_o_b with  each
  1574.           pipeline.   It keeps a table of current jobs, printed by the
  1575.           jjjjoooobbbbssss command, and assigns them small integer numbers.   When
  1576.           a  job  is started asynchronously with &&&&, the shell prints a
  1577.           line that looks like:
  1578.  
  1579.                [1] 1234
  1580.  
  1581.           indicating job number 1 was started asynchronously  and  had
  1582.           one (top-level) process whose process ID was 1234.
  1583.  
  1584.           There are several ways to refer to jobs in the shell.  A job
  1585.           can  be  referred to by the process id of any process in the
  1586.           job or by one of the following:
  1587.  
  1588.                %_n_u_m_b_e_r
  1589.                     The job with the given number.
  1590.  
  1591.                %_s_t_r_i_n_g
  1592.                     Any job whose command line begins with string.
  1593.  
  1594.                %?_s_t_r_i_n_g
  1595.                     Any job whose command line contains string.
  1596.  
  1597.  
  1598.  
  1599.      Page 25                                        (printed 12/15/92)
  1600.  
  1601.  
  1602.  
  1603.  
  1604.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1605.  
  1606.  
  1607.  
  1608.                %%   Current job.
  1609.  
  1610.                %+   Equivalent to %%.
  1611.  
  1612.                %-   Previous job.
  1613.  
  1614.           The shell learns when a process changes state.   It  informs
  1615.           the  user  when  a  job  terminates, but only just before it
  1616.           prints a prompt.
  1617.  
  1618.           If you try to leave the shell  while  jobs  are  running  or
  1619.           stopped,  you  are warned, "You have running jobs".  You may
  1620.           use the jjjjoooobbbbssss command to identify them.  If  you  immediately
  1621.           try  to  exit  again,  the  shell will not warn you a second
  1622.           time.
  1623.  
  1624.         SSSSppppeeeecccciiiiaaaallll CCCCoooommmmmmmmaaaannnnddddssss
  1625.           Input/output redirection is permitted  for  these  commands.
  1626.           File descriptor 1 is the default output location.
  1627.  
  1628.           ::::    No effect; the command does nothing.  A zero exit  code
  1629.                is returned.
  1630.  
  1631.           _l_e_t_t_e_r::::
  1632.                Select the drive specified by _l_e_t_t_e_r.
  1633.  
  1634.           .... _f_i_l_e
  1635.                Read and execute commands from _f_i_l_e  and  return.   The
  1636.                search  path  specified  by  PPPPAAAATTTTHHHH  is  used to find the
  1637.                directory containing _f_i_l_e.
  1638.  
  1639.           aaaalllliiiiaaaassss [ ----tttt ] [ _n_a_m_e[=_v_a_l_u_e ] ... ]
  1640.                AAAAlllliiiiaaaassss with no arguments prints the list of  aliases  in
  1641.                the  form  _n_a_m_e=vvvvaaaalllluuuueeee  on standard output.  An alias is
  1642.                defined for each _n_a_m_e whose _v_a_l_u_e is given.  A trailing
  1643.                space  in  _v_a_l_u_e causes the next word to be checked for
  1644.                alias substitution.  The ----tttt flag is  used  to  set  and
  1645.                list  tracked aliases.  The _v_a_l_u_e of a tracked alias is
  1646.                the full pathname corresponding to the given name.  The
  1647.                _v_a_l_u_e becomes undefined when the _v_a_l_u_e of PATH is reset
  1648.                but the aliases remained tracked.  Without the ----tttt flag,
  1649.                for  each  _n_a_m_e in the argument list for which no _v_a_l_u_e
  1650.                is given, the _n_a_m_e and _v_a_l_u_e of the alias  is  printed.
  1651.                Alias  returns zero unless a _n_a_m_e is given for which no
  1652.                alias has been defined.
  1653.  
  1654.           bbbbrrrreeeeaaaakkkk [ _n ]
  1655.                Exit from the enclosing ffffoooorrrr or wwwwhhhhiiiilllleeee loop, if any.   If
  1656.                _n is specified, break _n levels.
  1657.  
  1658.           bbbbuuuuiiiillllttttiiiinnnn [ _a_r_g_s ... ]
  1659.                Force  the  selection  of  the  bbbbuuuuiiiillllttttiiiinnnn  version  of  a
  1660.  
  1661.  
  1662.  
  1663.      Page 26                                        (printed 12/15/92)
  1664.  
  1665.  
  1666.  
  1667.  
  1668.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1669.  
  1670.  
  1671.  
  1672.                command.   The  builtin  shell  command selected by the
  1673.                first  _a_r_g_s  value  is  executed  with  the  parameters
  1674.                defined  by  the  remaining _a_r_g_ss.  If no arguments are
  1675.                given, a list of all _b_u_i_l_t_i_n commands is printed.
  1676.  
  1677.                If the first argument is  one  of  the  following,  the
  1678.                processing  of  the  builtin  command  in the following
  1679.                arguments are changed as indicated:
  1680.  
  1681.                ----aaaa   Set the following builtin commands to use  builtin
  1682.                     version  in preference to any function or external
  1683.                     versions.
  1684.  
  1685.                ----dddd   Set the following  builtin  commands  to  use  the
  1686.                     function  or external version in preference to the
  1687.                     builtin version.
  1688.  
  1689.                ----ssss   Display  the  current  status  of  the   following
  1690.                     builtin commands.
  1691.  
  1692.           ccccoooonnnnttttiiiinnnnuuuueeee [ _n ]
  1693.                Resume the next iteration of the enclosing ffffoooorrrr or wwwwhhhhiiiilllleeee
  1694.                loop.   If _n is specified, resume at the _n-th enclosing
  1695.                loop.
  1696.  
  1697.           ccccdddd [ _a_r_g ]
  1698.           ccccdddd _s_e_a_r_c_h _r_e_p_l_a_c_e
  1699.                This command can be in either of  two  forms.   In  the
  1700.                first  form  it  changes  the current directory to _a_r_g.
  1701.                The shell parameter HHHHOOOOMMMMEEEE is the default _a_r_g.  The shell
  1702.                parameter  CCCCDDDDPPPPAAAATTTTHHHH  defines  the  search  path  for  the
  1703.                directory containing _a_r_g.  Alternative directory  names
  1704.                are separated by a semi-colon (;;;;).  The default path is
  1705.                <<<<nnnnuuuullllllll>>>> (specifying the current directory).   Note  that
  1706.                the current directory is specified by a null path name,
  1707.                which can appear immediately after the  equal  sign  or
  1708.                between  the semi-colon delimiters anywhere else in the
  1709.                path list.  If _a_r_g begins with a //// or xxxx:::: (where x is  a
  1710.                drive letter), the search path is not used.  Otherwise,
  1711.                each directory in the path is searched for _a_r_g.  The _c_d
  1712.                command may not be executed by _r_s_h.
  1713.  
  1714.                In the second form, ccccdddd substitutes the  string  _r_e_p_l_a_c_e
  1715.                for  the  string  _s_e_a_r_c_h in the current directory name,
  1716.                PPPPWWWWDDDD and tries to change to this new directory.
  1717.  
  1718.           ddddeeeettttaaaacccchhhh _p_r_o_g_r_a_m [ _a_r_g_s ]
  1719.                This command  (which  is  only  available  under  OS/2)
  1720.                starts and simultaneously detaches an OS/2 _p_r_o_g_r_a_m from
  1721.                the shell.  Any _p_r_o_g_r_a_m that  is  started  with  ddddeeeettttaaaacccchhhh
  1722.                command  must  be able to process independently outside
  1723.                the control of the shell.  Builtin shell  commands  and
  1724.  
  1725.  
  1726.  
  1727.      Page 27                                        (printed 12/15/92)
  1728.  
  1729.  
  1730.  
  1731.  
  1732.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1733.  
  1734.  
  1735.  
  1736.                functions cannot be detached.
  1737.  
  1738.           eeeecccchhhhoooo [ _a_r_g ... ]
  1739.                Echo arguments. EEEEcccchhhhoooo writes its arguments separated  by
  1740.                blanks  and  terminated  by  a new-line on the standard
  1741.                output.  It also understands C-like escape conventions;
  1742.                beware of conflicts with the shell's use of \\\\:
  1743.  
  1744.                \\\\bbbb   backspace
  1745.                \\\\cccc   print line without new-line
  1746.                \\\\ffff   form-feed
  1747.                \\\\nnnn   new-line
  1748.                \\\\rrrr   carriage return
  1749.                \\\\tttt   tab
  1750.                \\\\vvvv   vertical tab
  1751.                \\\\\\\\   backslash
  1752.                \\\\_n   the 8-bit character whose ASCII code is the 1-, 2-
  1753.                     or 3-digit octal number _n, which must start with a
  1754.                     zero.
  1755.  
  1756.                     _E_c_h_o  is  useful  for  producing  diagnostics   in
  1757.                     command  files  and  for sending known data into a
  1758.                     pipe.
  1759.  
  1760.           eeeevvvvaaaallll [ _a_r_g ... ]
  1761.                The arguments are read as input to the  shell  and  the
  1762.                resulting command(s) executed.
  1763.  
  1764.           eeeexxxxeeeecccc [ _a_r_g ... ]
  1765.                The command specified by the arguments is  executed  in
  1766.                place  of  this  shell  without creating a new process.
  1767.                Input/output arguments may  appear  and,  if  no  other
  1768.                arguments are given, cause the shell input/output to be
  1769.                modified.
  1770.  
  1771.           eeeexxxxiiiitttt [ _n ]
  1772.                Causes a shell to exit with the exit  status  specified
  1773.                by  _n.   If _n is omitted the exit status is that of the
  1774.                last command executed (an end-of-file will  also  cause
  1775.                the shell to exit.)
  1776.  
  1777.           eeeexxxxppppoooorrrrtttt [ _n_a_m_e[=_v_a_l_u_e] ... ]
  1778.                The given _n_a_m_es are marked for automatic export to  the
  1779.                _e_n_v_i_r_o_n_m_e_n_t  of  subsequently-executed commands.  If no
  1780.                arguments are given, a  list  of  all  names  that  are
  1781.                exported  in this shell is printed.  Function names may
  1782.                _n_o_t be exported.
  1783.  
  1784.           ffffaaaallllsssseeee
  1785.                No effect; the command does nothing.  A  non-zero  exit
  1786.                code is returned.
  1787.  
  1788.  
  1789.  
  1790.  
  1791.      Page 28                                        (printed 12/15/92)
  1792.  
  1793.  
  1794.  
  1795.  
  1796.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1797.  
  1798.  
  1799.  
  1800.           ffffcccc [ ----eeee _E_d_i_t_o_r_N_a_m_e ] [ ----nnnnllllrrrr ] [ _F_i_r_s_t [ _L_a_s_t ] ]
  1801.           ffffcccc ----eeee ---- [ _O_l_d=_N_e_w ] [ _C_o_m_m_a_n_d ]
  1802.                In the first form, a range of commands  from  _F_i_r_s_t  to
  1803.                _L_a_s_t  is  selected from the last 100 commands that were
  1804.                typed at the terminal.  The _F_i_r_s_t and  _L_a_s_t  parameters
  1805.                can  be specified as a number or as a string.  A string
  1806.                locates the most recent command starting with the given
  1807.                string.   A negative number is used as an offset to the
  1808.                current command number.  If _L_a_s_t is not specified, then
  1809.                it  is  set  to  _F_i_r_s_t.  If _F_i_r_s_t is not specified, the
  1810.                default is the previous command for editing and -16 for
  1811.                listing.
  1812.  
  1813.                ----llll   Lists the commands to standard output.
  1814.  
  1815.                ----rrrr   Reverses the order of the commands in the list.
  1816.  
  1817.                ----nnnn   Suppresses command numbers when listing.
  1818.  
  1819.                If the ----llll flag is not  specified,  the  editor  program
  1820.                specified by _E_d_i_t_o_r_N_a_m_e is invoked on a file containing
  1821.                these  key-board  commands.   If  _E_d_i_t_o_r_N_a_m_e   is   not
  1822.                supplied,  then  the  value  of the FFFFCCCCEEEEDDDDIIIITTTT parameter is
  1823.                used as the editor.   When  editing  is  complete,  the
  1824.                edited command(s) is executed.
  1825.  
  1826.                In the second form, the specified  _c_o_m_m_a_n_d  is  carried
  1827.                out again after the _O_l_d=_N_e_w substitution is performed.
  1828.  
  1829.           ffffuuuunnnnccccttttiiiioooonnnnssss [ _n_a_m_e ... ]
  1830.                The functions  given  by  _n_a_m_es  are  printed.   If  no
  1831.                arguments are given, a all the functions are displayed.
  1832.  
  1833.           ggggeeeettttooooppppttttssss _o_p_t_s_t_r_i_n_g _n_a_m_e [ _a_r_g ... ]
  1834.                Checks _a_r_g for legal options.  If _a_r_g is  omitted,  the
  1835.                positional  parameters  are  used.   An option argument
  1836.                begins with a ++++ or a ----.  An option not beginning with ++++
  1837.                or  ----  or  the argument -------- ends the options.  _o_p_t_s_t_r_i_n_g
  1838.                contains the letters that  ggggeeeettttooooppppttttssss  recognizes.   If  a
  1839.                letter  is  followed by a ::::, that option is expected to
  1840.                have an argument.  The options can  be  separated  from
  1841.                the argument by blanks.
  1842.  
  1843.                ggggeeeettttooooppppttttssss places the next option letter it  finds  inside
  1844.                variable  _n_a_m_e  eeeeaaaacccchhhh  ttttiiiimmmmeeee  iiiitttt  iiiissss  iiiinnnnvvvvooookkkkeeeedddd,,,,  wwwwiiiitttthhhh  aaaa ++++
  1845.                prepended when _a_r_g begins with a ++++.  The index  of  the
  1846.                next  arg is stored in OOOOPPPPTTTTIIIINNNNDDDD.  The option argument, if
  1847.                any, gets stored in OOOOPPPPTTTTAAAARRRRGGGG,
  1848.  
  1849.                A leading :::: in _o_p_t_s_t_r_i_n_g causes ggggeeeettttooooppppttttssss  to  store  the
  1850.                letter  of an invalid option in OOOOPPPPTTTTAAAARRRRGGGG, and to set _n_a_m_e
  1851.                to ???? for an unknown option and to  ::::  when  a  required
  1852.  
  1853.  
  1854.  
  1855.      Page 29                                        (printed 12/15/92)
  1856.  
  1857.  
  1858.  
  1859.  
  1860.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1861.  
  1862.  
  1863.  
  1864.                option  is missing.  Otherwise, ggggeeeettttooooppppttttssss prints an error
  1865.                message.  The exit status is non-zero when there are no
  1866.                more options.
  1867.  
  1868.           hhhhiiiissssttttoooorrrryyyy [ ----ddddeeeeiiiillllssss ]
  1869.                The hhhhiiiissssttttoooorrrryyyy command, with no arguments, will print  all
  1870.                the  commands  that  are currently saved in the shell's
  1871.                history buffers.  As new  commands  are  executed,  and
  1872.                space  in  the  buffers  runs out, old commands will be
  1873.                deleted.  The hhhhiiiissssttttoooorrrryyyy commands prints  out  the  stored
  1874.                commands  with  sequence  numbers.   Negative  numbered
  1875.                commands, through command  number  zero,  are  commands
  1876.                that  were  retrieved  from  the  saved  history  file.
  1877.                Commands  starting  at  one  were  entered  during  the
  1878.                current  login  session.   If  a saved command contains
  1879.                embedded newlines, these will be  printed  out  as  the
  1880.                sequence  \\\\nnnn,  so  that  individual command stay on one
  1881.                line.
  1882.  
  1883.                The arguments  changes  the  way  the  shell  processes
  1884.                history information as follows:
  1885.  
  1886.                ----dddd   Disable the saving  of  commands  in  the  history
  1887.                     file.
  1888.  
  1889.                ----eeee   Enable the saving of commands in the history file.
  1890.  
  1891.                ----iiii   Initialise the history file.
  1892.  
  1893.                ----llll   Load the  history  from  the  file  given  by  the
  1894.                     HHHHIIIISSSSTTTTFFFFIIIILLLLEEEE environment variable.
  1895.  
  1896.                ----ssss   Save the history to the file given by the HHHHIIIISSSSTTTTFFFFIIIILLLLEEEE
  1897.                     environment variable.
  1898.  
  1899.           jjjjoooobbbbssss [ ----llllpppp | [ ----PPPP _j_o_b ] ]
  1900.                This command (which is only available under OS/2) lists
  1901.                the  active jobs; or all active jobs if job is omitted.
  1902.                The ----llll options lists process id's in  addition  to  the
  1903.                normal  information.   The  ----pppp flag lists all the child
  1904.                processes  of  the  current  shell,  displaying   their
  1905.                process  ID  and  thread count.  The ----PPPP iiiidddd option lists
  1906.                all the child processes of  the  specified  process  or
  1907.                job.  See JJJJoooobbbbssss for a description of the format of job.
  1908.  
  1909.           kkkkiiiillllllll [ ----ssssiiiigggg ] [ _p_r_o_c_e_s_s | %%%%_j_o_b_i_d ] ...
  1910.                This command (which is only available under OS/2) sends
  1911.                either  the  TTTTEEEERRRRMMMM  (terminate)  signal or the specified
  1912.                signal to the specified _p_r_o_c_e_s_s_e_s.  _S_i_g_n_a_l_s  _a_r_e  _g_i_v_e_n
  1913.                _b_y _n_a_m_e, _w_h_i_c_h _a_r_e _l_i_s_t_e_d _b_y ''''kkkkiiiillllllll ----llll''''.  If the _p_r_o_c_e_s_s
  1914.                number begins with a %%%%, the signal is sent to  the  job
  1915.                referenced.   See  JJJJoooobbbbssss for a description of the format
  1916.  
  1917.  
  1918.  
  1919.      Page 30                                        (printed 12/15/92)
  1920.  
  1921.  
  1922.  
  1923.  
  1924.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1925.  
  1926.  
  1927.  
  1928.                of a _j_o_b.
  1929.  
  1930.           lllleeeetttt [ _a_r_g ... ]
  1931.                Each _a_r_g is an arithmetic expression to  be  evaluated.
  1932.                All calculations are done as long integers and no check
  1933.                for overflow is performed.  See  AAAArrrriiiitttthhhhmmmmeeeettttiiiicccc  EEEEvvvvaaaalllluuuuaaaattttiiiioooonnnn
  1934.                above for a description of arithmetic expressions..
  1935.  
  1936.                The  return  code  is  0  if  the  value  of  the  last
  1937.                expression is non-zero, and 1 otherwise.
  1938.  
  1939.           mmmmssssddddoooossss [ _n_a_m_e[=_v_a_l_u_e] ... ]
  1940.                The given _n_a_m_es are marked _m_s_d_o_s format and if  the  ----mmmm
  1941.                flag is set, the values of the these _n_a_m_es are exported
  1942.                to child  processes  with  any  slashes  in  the  value
  1943.                replaced  by  \\\\s.  If no arguments are given, a list of
  1944.                all _m_s_d_o_s names is printed.
  1945.  
  1946.           pppprrrriiiinnnntttt [ ----RRRRnnnnpppprrrrssss ] [ ----uuuu uuuunnnniiiitttt ] [ _a_r_g_s ... ]
  1947.                The shell output mechanism.  With no flags or with flag
  1948.                -  or  --  the  _a_r_g_s  are printed on standard output as
  1949.                described by the eeeecccchhhhoooo command.
  1950.  
  1951.                ----RRRR   Prints in  the  raw  mode,  in  which  the  escape
  1952.                     conventions  of the eeeecccchhhhoooo command are ignored.  The
  1953.                     -_R option prints all subsequent _a_r_g_s  and  options
  1954.                     other than -_n.
  1955.  
  1956.                ----nnnn   Prevents  a  new-line  from  being  added  to  the
  1957.                     output.
  1958.  
  1959.                ----pppp   ----pppp  flag  has  not  effect  and  is  defined   for
  1960.                     compatability.
  1961.  
  1962.                ----rrrr   Prints in  the  raw  mode,  in  which  the  escape
  1963.                     conventions of the eeeecccchhhhoooo command are ignored.
  1964.  
  1965.                ----ssss   Writes the _a_r_g_s to the history file instead of  to
  1966.                     standard output.
  1967.  
  1968.                ----uuuu uuuunnnniiiitttt
  1969.                     Specifies a one digit file descriptor uuuunnnniiiitttt  number
  1970.                     on which the output is placed.  The default is 1.
  1971.  
  1972.           ppppwwwwdddd [ _d_r_i_v_e ... ]
  1973.                Print the  current  working  directory.   If  _d_r_i_v_e  is
  1974.                present,  the  current working directory on each of the
  1975.                drives is printed.  _d_r_i_v_e contains a  string  of  drive
  1976.                letters, no colons are required.
  1977.  
  1978.           rrrreeeeaaaadddd [ ----pppprrrrssss ] [ ----uuuu uuuunnnniiiitttt ] [ _n_a_m_e?_p_r_o_m_p_t ] [ _n_a_m_e ... ]
  1979.                The shell input mechanism.  One line  is  read  and  is
  1980.  
  1981.  
  1982.  
  1983.      Page 31                                        (printed 12/15/92)
  1984.  
  1985.  
  1986.  
  1987.  
  1988.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  1989.  
  1990.  
  1991.  
  1992.                broken  up  into  words  using the characters in IIIIFFFFSSSS as
  1993.                separators.  In raw mode, ----rrrr, a \\\\ at the end of a  line
  1994.                does  not signify line continuation.  The first word is
  1995.                assigned to the first _n_a_m_e,  the  second  word  to  the
  1996.                second  _n_a_m_e, etc., with leftover words assigned to the
  1997.                last _n_a_m_e.  If the ----ssss flag is present, the  input  will
  1998.                be saved as a command in the history file.  The ----pppp flag
  1999.                has not effect and is defined for  compatability.   The
  2000.                flag  ----uuuu  can  be  used  to  specify  a  one digit file
  2001.                descriptor uuuunnnniiiitttt to read from.  The file descriptor  can
  2002.                be  opened  with the eeeexxxxeeeecccc special command.  The default
  2003.                value of uuuunnnniiiitttt is 0.  If _n_a_m_e is omitted then  RRRREEEEPPPPLLLLYYYY  is
  2004.                used  as  the  default  name.   If  the  first argument
  2005.                contains a ????, the remainder of this word is used  as  a
  2006.                prompt  when  the  shell  is interactive.  If the given
  2007.                file descriptor is open for writing and is  a  terminal
  2008.                device   then  the  prompt  is  placed  on  this  unit.
  2009.                Otherwise the prompt is issued on  file  descriptor  2.
  2010.                The   return   code  is  0  unless  an  end-of-file  is
  2011.                encountered.
  2012.  
  2013.           rrrreeeeaaaaddddoooonnnnllllyyyy [ _n_a_m_e[=_v_a_l_u_e] ... ]
  2014.                The given _n_a_m_es are marked _r_e_a_d_o_n_l_y and the  values  of
  2015.                the  these  _n_a_m_es  may  not  be  changed  by subsequent
  2016.                assignment.  If no arguments are given, a list  of  all
  2017.                _r_e_a_d_o_n_l_y names is printed.
  2018.  
  2019.           rrrreeeettttuuuurrrrnnnn [ _n ]
  2020.                Causes  a  function  to  exit  with  the  return  value
  2021.                specified  by _n.  If _n is omitted, the return status is
  2022.                that of the last command executed.
  2023.  
  2024.           sssseeeetttt [ [----||||++++]aaaaeeeeffffkkkkmmmmnnnnttttuuuuvvvvxxxx ] [ ----oooo ooooppppttttiiiioooonnnn ] [ _a_r_g ... ]
  2025.  
  2026.                ----aaaa   Mark variables which are modified or  created  for
  2027.                     export.
  2028.  
  2029.                ----eeee   Exit immediately if a command exits  with  a  non-
  2030.                     zero exit status.
  2031.  
  2032.                ----ffff   Disable file name generation
  2033.  
  2034.                ----kkkk   All  keyword   arguments   are   placed   in   the
  2035.                     environment  for  a  command,  not just those that
  2036.                     precede the command name.
  2037.  
  2038.                ----mmmm   For those variables marked as mmmmssssddddoooossss variables, the
  2039.                     values  are  exported  to child processes with the
  2040.                     slashes replaced by \\\\s.  Most MSDOS  utilities  do
  2041.                     not care if a file name contains a slash or \\\\ as a
  2042.                     directory  separator.   However,  some  like   the
  2043.                     _l_i_n_k_e_r   require  \\\\s  in  the  value  of  the  LLLLIIIIBBBB
  2044.  
  2045.  
  2046.  
  2047.      Page 32                                        (printed 12/15/92)
  2048.  
  2049.  
  2050.  
  2051.  
  2052.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2053.  
  2054.  
  2055.  
  2056.                     variable.
  2057.  
  2058.                ----nnnn   Read commands but do not execute them.
  2059.  
  2060.                ----oooo ooooppppttttiiiioooonnnn
  2061.                     The argument that follows this option can  be  one
  2062.                     of the following option names:
  2063.  
  2064.                     aaaalllllllleeeexxxxppppoooorrrrtttt
  2065.                          Same as ----aaaa....
  2066.  
  2067.                     bbbbeeeellllllll Enable alarm bell on errors
  2068.  
  2069.                     eeeerrrrrrrreeeexxxxiiiitttt
  2070.                          Same as ----eeee....
  2071.  
  2072.                     hhhhaaaallllffffhhhheeeeiiiigggghhhhtttt
  2073.                          Set cursor to halfheight when in insert mode.
  2074.                          If off, a full height cursor is used.
  2075.  
  2076.                     iiiiggggnnnnoooorrrreeeeeeeeooooffff
  2077.                          The shell will not exit on end-of-file.   The
  2078.                          command exit must be used.
  2079.  
  2080.                     iiiinnnnsssseeeerrrrttttmmmmooooddddeeee
  2081.                          Set the default edit mode  to  insert  rather
  2082.                          than overwrite.
  2083.  
  2084.                     kkkkeeeeyyyywwwwoooorrrrdddd
  2085.                          Same as ----kkkk....
  2086.  
  2087.                     mmmmaaaarrrrkkkkddddiiiirrrrssss
  2088.                          Appends a / (slash) to  all  directory  names
  2089.                          that are a result of file name substitution.
  2090.  
  2091.                     nnnnoooocccclllloooobbbbbbbbeeeerrrr
  2092.                          Prevents  redirection   >>>>   from   truncating
  2093.                          existing  files.   A vertical bar must follow
  2094.                          the redirection symbol  ((((>>>>||||))))  to  truncate  a
  2095.                          file when this option is turned on.
  2096.  
  2097.                     nnnnooooeeeexxxxeeeecccc
  2098.                          Same as ----nnnn....
  2099.  
  2100.                     nnnnoooogggglllloooobbbb
  2101.                          Same as ----ffff....
  2102.  
  2103.                     nnnnoooouuuunnnnsssseeeetttt
  2104.                          Same as ----uuuu....
  2105.  
  2106.                     pppprrrriiiivvvviiiilllleeeeggggeeeedddd
  2107.                          Same as ----pppp....
  2108.  
  2109.  
  2110.  
  2111.      Page 33                                        (printed 12/15/92)
  2112.  
  2113.  
  2114.  
  2115.  
  2116.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2117.  
  2118.  
  2119.  
  2120.                     rrrreeeeaaaallllppppiiiippppeeeessss
  2121.                          Under OS/2, the shell will use OS/2 pipes and
  2122.                          not temporary files to handle pipelines.  See
  2123.                          LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS.
  2124.  
  2125.                     ttttrrrraaaacccckkkkaaaallllllll
  2126.                          Same as ----hhhh....
  2127.  
  2128.                     vvvveeeerrrrbbbboooosssseeee
  2129.                          Same as ----vvvv....
  2130.  
  2131.                     xxxxttttrrrraaaacccceeee
  2132.                          Same as ----xxxx....
  2133.  
  2134.                ----tttt   Exit after reading and executing one command.
  2135.  
  2136.                ----uuuu   Treat   unset   variables   as   an   error   when
  2137.                     substituting.
  2138.  
  2139.                ----vvvv   Print shell input lines as they are read.
  2140.  
  2141.                ----wwww   Disable shell warning messages.
  2142.  
  2143.                ----xxxx   Print commands and their  arguments  as  they  are
  2144.                     executed.
  2145.  
  2146.                --------   Do not change any of the flags; useful in  setting
  2147.                     $$$$1111 to ----.
  2148.  
  2149.                     Using ++++ rather than ---- causes  these  flags  to  be
  2150.                     turned  off.   These  flags  can also be used upon
  2151.                     invocation of the shell.  The current set of flags
  2152.                     may  be  found in $$$$----.  The remaining arguments are
  2153.                     positional parameters and are assigned, in  order,
  2154.                     to  $$$$1111,  $$$$2222,  ....   If no arguments are given the
  2155.                     values of all names are printed.
  2156.  
  2157.           sssshhhhiiiifffftttt [ _n ]
  2158.                The positional parameters from $$$$nnnn++++1111 ...  are renamed $$$$1111
  2159.                ....  If _n is not given, it is assumed to be 1.
  2160.  
  2161.           ssssttttaaaarrrrtttt [ ----ddddffffiiiiCCCCWWWWPPPPFFFF ] [ ----tttt ttttiiiittttlllleeee ] [ _p_r_o_g_r_a_m [ _a_r_g_u_m_e_n_t_s.. ] ]
  2162.                This command  (which  is  only  available  under  OS/2)
  2163.                starts an OS/2 _p_r_o_g_r_a_m in a new session.  If no _p_r_o_g_r_a_m
  2164.                and _a_r_g_u_m_e_n_t_s parameters  are  entered,  the  shell  is
  2165.                started  unless  the  -C option has been used to select
  2166.                the OS/2 command processor.
  2167.  
  2168.                The arguments changes the  way  the  shell  starts  the
  2169.                session as follows:
  2170.  
  2171.                ----dddd   Normally, command  are  started  by  invoking  the
  2172.  
  2173.  
  2174.  
  2175.      Page 34                                        (printed 12/15/92)
  2176.  
  2177.  
  2178.  
  2179.  
  2180.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2181.  
  2182.  
  2183.  
  2184.                     shell in the new session.  This option invokes the
  2185.                     command directly.
  2186.  
  2187.                ----ffff   The program becomes  the  foreground  session.  If
  2188.                     this  parameter  is  not  specified,  the  program
  2189.                     becomes a background session.
  2190.  
  2191.                ----iiii   The  new  session  will   inherit   the   original
  2192.                     environment  of  the  shell instead of the current
  2193.                     environment.
  2194.  
  2195.                ----tttt ttttiiiittttlllleeee
  2196.                     Sets the _t_i_t_l_e of the new session.
  2197.  
  2198.                ----FFFF   This application is a full-screen application that
  2199.                     must  run  in  a  separate  session independent of
  2200.                     Presentation Manager.
  2201.  
  2202.                ----WWWW   This is an OS/2 application  that  runs  within  a
  2203.                     Presentation Manager window.
  2204.  
  2205.                ----PPPP   This application  is  started  as  a  Presentation
  2206.                     Manager application.
  2207.  
  2208.                ----CCCC   Use the OS/2  command  processor  instead  of  the
  2209.                     shell.
  2210.  
  2211.           sssswwwwaaaapppp [ _o_p_t_i_o_n_s ]
  2212.                This command (which is  only  available  under  MS-DOS)
  2213.                defines  how  the  shell will handle swapping itself to
  2214.                reduce its memory requirements  whilst  other  programs
  2215.                execute.  The options are
  2216.  
  2217.                ooooffffffff  Disable swapping.  The  shell  remains  in  memory
  2218.                     whilst  the  child  is  running  and  reduces  the
  2219.                     available memory by about 200K (depending  on  the
  2220.                     size of the environment and history).
  2221.  
  2222.                oooonnnn   Enable all devices.  The shell will  swap  out  to
  2223.                     either  expanded  or  extended  memory or to disk,
  2224.                     execute  the  command  and  then  swap  back   in.
  2225.                     Whilest  swapped,  the shell reduces the available
  2226.                     memory by about 3K.
  2227.  
  2228.                eeeexxxxppppaaaannnndddd
  2229.                     Enable  swapping  to  Expanded  Memory.   The  EMS
  2230.                     driver must exist on your system for this to work.
  2231.  
  2232.                eeeexxxxtttteeeennnndddd [ _s_t_a_r_t _a_d_d_r_e_s_s ]
  2233.                     Enable swapping to Extended Memory.  If  you  have
  2234.                     an  XMS  driver on your system, the shell will use
  2235.                     the XMS driver.  Otherwise, the BIOS Interrupt  15
  2236.  
  2237.  
  2238.  
  2239.      Page 35                                        (printed 12/15/92)
  2240.  
  2241.  
  2242.  
  2243.  
  2244.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2245.  
  2246.  
  2247.  
  2248.                     interface  is  used.   The  optional start address
  2249.                     defines the based address in the  Extended  Memory
  2250.                     at which point the shell writes its swap area when
  2251.                     the BIOS interface is used.  The default  location
  2252.                     is _0_x_1_0_0_0_0_0.
  2253.  
  2254.                ddddiiiisssskkkk Enable swapping to  disk.   The  shell  creates  a
  2255.                     temporary   file  and  saves  itself  in  it.   On
  2256.                     completion, the file  is  deleted.   This  is  the
  2257.                     slowest method of swapping.
  2258.  
  2259.                     With no options, the current swapping options  are
  2260.                     displayed.
  2261.           tttteeeesssstttt _e_x_p_r
  2262.           [[[[ _e_x_p_r ]]]]
  2263.                Evaluate conditional expressions.  TTTTeeeesssstttt  evaluates  the
  2264.                expression  _e_x_p_r  and,  if its value is true, returns a
  2265.                zero (true) exit status; otherwise, a non-zero  (false)
  2266.                exit  status  is returned; tttteeeesssstttt also returns a non-zero
  2267.                exit status if there are no arguments.  The  primitives
  2268.                are  the  same  as  for  the  [[[[[[[[ _e_x_p_r_e_s_s_i_o_n ]]]]]]]] command,
  2269.                except that -_a and -_o are not primitives, but are  used
  2270.                to  combine operators (see tttteeeesssstttt ((((1111))))).  -_a is the binary
  2271.                aaaannnndddd operator and -_o is the binary oooorrrr operator.
  2272.  
  2273.                Notice that all the operators and  flags  are  separate
  2274.                arguments  to  tttteeeesssstttt.   Notice also that parentheses are
  2275.                meaningful  to  the  shell  and,  therefore,  must   be
  2276.                escaped.
  2277.  
  2278.           ttttrrrraaaapppp [ _a_r_g ] [ _S_i_g_n_a_l_N_u_m_b_e_r ] ...
  2279.                The command _a_r_g is to be read  and  executed  when  the
  2280.                shell  receives signal(s) _S_i_g_n_a_l_N_u_m_b_e_r.  (Note that _a_r_g
  2281.                is scanned once when the trap is set and once when  the
  2282.                trap is taken.)  Trap commands are executed in order of
  2283.                signal number.  Any attempt to set a trap on  a  signal
  2284.                that  was  ignored  on  entry  to  the current shell is
  2285.                ineffective.  If _a_r_g is absent all trap(s) _S_i_g_n_a_l_N_u_m_b_e_r
  2286.                are reset to their original values.  If _a_r_g is the null
  2287.                string this signal is ignored by the shell and  by  the
  2288.                commands it invokes.  If _S_i_g_n_a_l_N_u_m_b_e_r is DDDDEEEEBBBBUUUUGGGG then _a_r_g
  2289.                will be executed after each command.   If  _S_i_g_n_a_l_N_u_m_b_e_r
  2290.                is  EEEERRRRRRRR,  _a_r_g will be executed whenever a command has a
  2291.                non-zero exit code.  If _S_i_g_n_a_l_N_u_m_b_e_r is 0 or  EEEEXXXXIIIITTTT  and
  2292.                the  trap  statement  is  executed inside the body of a
  2293.                function,  the  command  _a_r_g  is  executed  after   the
  2294.                function completes.  If _S_i_g_n_a_l_N_u_m_b_e_r is 0 or EEEEXXXXIIIITTTT for a
  2295.                trap set outside  any  function,  the  command  _a_r_g  is
  2296.                executed on exit from the shell.  The ttttrrrraaaapppp command with
  2297.                no arguments prints a list of commands associated  with
  2298.                each signal number.
  2299.  
  2300.  
  2301.  
  2302.  
  2303.      Page 36                                        (printed 12/15/92)
  2304.  
  2305.  
  2306.  
  2307.  
  2308.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2309.  
  2310.  
  2311.  
  2312.           ttttrrrruuuueeee No effect; the command does nothing.  A zero exit  code
  2313.                is returned.
  2314.  
  2315.           ttttyyyyppppeeeesssseeeetttt [ ----HHHHLLLLRRRRZZZZffffiiiillllpppprrrrttttuuuuxxxx[nnnn] [ nnnnaaaammmmeeee[ ====vvvvaaaalllluuuueeee ] ] ... ]
  2316.                When invoked inside a function, a new instance  of  the
  2317.                parameter  name  is  created.   The parameter value and
  2318.                type are restored when  the  function  completes.   The
  2319.                following list of attributes may be specified:
  2320.  
  2321.                ----HHHH   This flag provides UNIX to host-name file  mapping
  2322.                     on non-UNIX machines (see mmmmssssddddoooossss command).
  2323.  
  2324.                ----LLLL   Left justify and remove leading blanks from value.
  2325.                     If  nnnn  is  non-zero  it  defines  the width of the
  2326.                     field, otherwise it is determined by the width  of
  2327.                     the value of first assignment.  When the parameter
  2328.                     is assigned to, it is filled  on  the  right  with
  2329.                     blanks or truncated, if necessary, to fit into the
  2330.                     field.  Leading zeros are removed if the  ----ZZZZ  flag
  2331.                     is also set.  The ----RRRR flag is turned off.
  2332.  
  2333.                ----RRRR   Right justify and fill with leading blanks.  If  nnnn
  2334.                     is  non-zero,  it  defines the width of the field,
  2335.                     otherwise it is determined by  the  width  of  the
  2336.                     value  of  first  assignment.   The  field is left
  2337.                     filled with blanks or truncated from  the  end  if
  2338.                     the  parameter  is  reassigned.   The  ----LLLL  flag is
  2339.                     turned off.
  2340.  
  2341.                ----ZZZZ   Right justify and fill with leading zeros  if  the
  2342.                     first  non-blank  character  is a digit and the ----LLLL
  2343.                     flag has not been  set.   If  nnnn  is  non-zero,  it
  2344.                     defines  the  width  of the field, otherwise it is
  2345.                     determined by the width  of  the  value  of  first
  2346.                     assignment.
  2347.  
  2348.                ----ffff   The names refer  to  function  names  rather  than
  2349.                     parameter  names.   No assignments can be made and
  2350.                     the only other valid flags are ----tttt, which turns  on
  2351.                     execution  tracing  for  this  function and ----xxxx, to
  2352.                     allow the function  to  remain  in  effect  across
  2353.                     shell  procedures  executed  in  the  same process
  2354.                     environment.
  2355.  
  2356.                ----iiii   Parameter is an integer.   This  makes  arithmetic
  2357.                     faster.   If  nnnn  is non-zero it defines the output
  2358.                     arithmetic base, otherwise  the  first  assignment
  2359.                     determines the output base.
  2360.  
  2361.                ----llll   All upper-case characters converted to lower-case.
  2362.                     The upper-case flag, ----uuuu is turned off.
  2363.  
  2364.  
  2365.  
  2366.  
  2367.      Page 37                                        (printed 12/15/92)
  2368.  
  2369.  
  2370.  
  2371.  
  2372.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2373.  
  2374.  
  2375.  
  2376.                ----pppp   The output of this command,  if  any,  is  written
  2377.                     onto  the two-way pipe.  TTTThhhhiiiissss ooooppppttttiiiioooonnnn hhhhaaaassss nnnnoooo eeeeffffffffeeeecccctttt
  2378.                     iiiinnnn tttthhhheeee SSSShhhheeeellllllll.
  2379.  
  2380.                ----rrrr   The given names  are  marked  readonly  and  these
  2381.                     names cannot be changed by subsequent assignment.
  2382.  
  2383.                ----tttt   Tags the named parameters. Tags are user definable
  2384.                     and have no special meaning to the shell.
  2385.  
  2386.                ----uuuu   All lower-case characters are converted to  upper-
  2387.                     case  characters.   The  lower-case  flag,  ----llll  is
  2388.                     turned off.
  2389.  
  2390.                ----xxxx   The given names are marked for automatic export to
  2391.                     the environment of subsequently-executed commands.
  2392.  
  2393.                Using + rather than - causes these flags to  be  turned
  2394.                off.   If  no  name  arguments  are given but flags are
  2395.                specified, a list of names (and optionally the  values)
  2396.                of  the  parameters  which  have  these  flags  set  is
  2397.                printed.  (Using + rather than - keeps the values to be
  2398.                printed.)   If  no names and flags are given, the names
  2399.                and attributes of all parameters are printed.
  2400.  
  2401.           uuuummmmaaaasssskkkk [ _n_n_n ]
  2402.                The  user  file-creation  mask  is  set  to  _n_n_n   (see
  2403.                _u_m_a_s_k(2)).  If _n_n_n is omitted, the current value of the
  2404.                mask is printed.
  2405.  
  2406.           uuuunnnnaaaalllliiiiaaaassss _n_a_m_e ...
  2407.                The aliases given by the list of _n_a_m_es are removed from
  2408.                the alias list.
  2409.  
  2410.           uuuunnnnffffuuuunnnnccccttttiiiioooonnnn _n_a_m_e ...
  2411.                For each _n_a_m_e, remove the corresponding function.
  2412.  
  2413.           uuuunnnnsssseeeetttt [ ----ffff ] _n_a_m_e ...
  2414.                The  parameters  given  by  the  list  of   _n_a_m_es   are
  2415.                unassigned  (their  values  and attributes are erased).
  2416.                The following variables, as well as those with a  read-
  2417.                only  attribute  cannot  be  unset: PPPPAAAATTTTHHHH, PPPPSSSS1111, PPPPSSSS2222, and
  2418.                IIIIFFFFSSSS.  If the -f flag is set, then the  names  refer  to
  2419.                function names and the functions are removed.
  2420.  
  2421.                Unsetting LLLLIIIINNNNEEEENNNNOOOO, MMMMAAAAIIIILLLLCCCCHHHHEEEECCCCKKKK,  OOOOPPPPTTTTAAAARRRRGGGG,  OOOOPPPPTTTTIIIINNNNDDDD,  RRRRAAAANNNNDDDDOOOOMMMM,
  2422.                SSSSEEEECCCCOOOONNNNDDDDSSSS,  and  ____  removes their special meaning even if
  2423.                they are subsequently assigned to.
  2424.  
  2425.           vvvveeeerrrr  Display the current version of the shell.
  2426.  
  2427.           wwwwaaaaiiiitttt [ jjjjoooobbbb ]
  2428.  
  2429.  
  2430.  
  2431.      Page 38                                        (printed 12/15/92)
  2432.  
  2433.  
  2434.  
  2435.  
  2436.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2437.  
  2438.  
  2439.  
  2440.                This command (which is only available under OS/2) waits
  2441.                for  the  specified  _j_o_b  to  terminate  and report its
  2442.                status.  This status becomes the return  code  for  the
  2443.                wwwwaaaaiiiitttt  command.  If _j_o_b is not given, wwwwaaaaiiiitttt waits for all
  2444.                currently active child  processes  to  terminate.   The
  2445.                termination   status  returned  is  that  of  the  last
  2446.                process.  See JJJJoooobbbbssss for a description of the format of a
  2447.                _j_o_b.
  2448.  
  2449.           wwwwhhhheeeennnncccceeee [ ----ppppvvvv ] [ _n_a_m_e ... ]
  2450.           ttttyyyyppppeeee [ ----pppp ] [ _n_a_m_e ... ]
  2451.                For each _n_a_m_e  specified,  indicate  how  it  would  be
  2452.                interpreted  if used as a command name.  Note that ttttyyyyppppeeee
  2453.                is a shorthand for wwwwhhhheeeennnncccceeee ----vvvv.
  2454.  
  2455.                ----pppp   Does a path search for _n_a_m_e even if the name is an
  2456.                     alias, a function, or a reserved word.
  2457.  
  2458.                ----vvvv   Produces a more verbose report.
  2459.  
  2460.         IIIInnnnvvvvooooccccaaaattttiiiioooonnnn
  2461.           If the shell  is  invoked  through  _e_x_e_c(2)  and  the  first
  2462.           character of argument zero is ---- or the ----0000(zero) switch is in
  2463.           the  invokation  line,  commands  are  initially  read  from
  2464.           ////eeeettttcccc////pppprrrrooooffffiiiilllleeee....sssshhhh  and  from  $$$$HHHHOOOOMMMMEEEE////pppprrrrooooffffiiiilllleeee....sssshhhh,  if such files
  2465.           exist.  Next, commands are  read  from  the  file  named  by
  2466.           performing  parameter  substitution  on  the  value  of  the
  2467.           environment parameter EEEENNNNVVVV if the file  exists.   Thereafter,
  2468.           commands are read as described below, which is also the case
  2469.           when the shell is invoked as ////bbbbiiiinnnn////sssshhhh.  The flags  below  are
  2470.           interpreted  by  the  shell  on  invocation  only; Note that
  2471.           unless the ----cccc or ----ssss flag is specified, the first argument is
  2472.           assumed  to  be  the name of a file containing commands, and
  2473.           the remaining arguments are passed as positional  parameters
  2474.           to that command file:
  2475.  
  2476.           ----cccc string If the ----cccc flag is present commands are  read  from
  2477.                     _s_t_r_i_n_g.
  2478.  
  2479.           ----ssss        If the ----ssss flag  is  present  or  if  no  arguments
  2480.                     remain  commands are read from the standard input.
  2481.                     Any remaining  arguments  specify  the  positional
  2482.                     parameters.   Shell  output  (except  for  _S_p_e_c_i_a_l
  2483.                     _C_o_m_m_a_n_d_s) is written to file descriptor 2.
  2484.  
  2485.           ----iiii        If the ----iiii flag is present or if  the  shell  input
  2486.                     and  output are attached to a terminal, this shell
  2487.                     is  _i_n_t_e_r_a_c_t_i_v_e.   In  this  case,  the  TERMINATE
  2488.                     signal  is  ignored  and  the  INTERRUPT signal is
  2489.                     caught and ignored.  In all cases, the QUIT signal
  2490.                     is ignored by the shell.
  2491.  
  2492.  
  2493.  
  2494.  
  2495.      Page 39                                        (printed 12/15/92)
  2496.  
  2497.  
  2498.  
  2499.  
  2500.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2501.  
  2502.  
  2503.  
  2504.           ----rrrr        If  the  ----rrrr  flag  is  present,  the  shell  is  a
  2505.                     restricted shell.
  2506.  
  2507.           ----0000(zero)  If the ----0000(zero) flag is present, this has the same
  2508.                     effect  as  starting  the  shell  with  the  first
  2509.                     character of argument zero as a ---- (see above).
  2510.  
  2511.           ----PPPP        This option enables real pipes  under  OS/2.   See
  2512.                     LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS.
  2513.  
  2514.           ----RRRR        If the ----RRRR flag is present, the shell is  the  _r_o_o_t
  2515.                     shell  and cannot be terminated using exit.  Under
  2516.                     MSDOS, the system must be re-booted.  Under  OS/2,
  2517.                     the  shell  must be killed by an external program.
  2518.                     In addition, the initialisation file is  not  read
  2519.                     until  just before the first keyboard input.  This
  2520.                     allows the location of the file to be  changed  by
  2521.                     changing   the  value  of  the  SHELL  environment
  2522.                     variable.
  2523.  
  2524.           The remaining flags and arguments are  described  under  the
  2525.           sssseeeetttt command above.
  2526.  
  2527.         RRRRsssshhhh OOOOnnnnllllyyyy
  2528.           _R_s_h is used to set up login names and execution environments
  2529.           whose  capabilities  are  more  controlled than those of the
  2530.           standard shell.  The actions of _r_s_h are identical  to  those
  2531.           of _s_h, except that the following are disallowed:
  2532.  
  2533.                Changing directory (see _c_d(1)),
  2534.                Setting the value of SSSSHHHHEEEELLLLLLLL, EEEENNNNVVVV, or $$$$PPPPAAAATTTTHHHH,
  2535.                Specifying path or command names containing ////,
  2536.                Redirecting output (>>>> and >>>>>>>>).
  2537.  
  2538.           The restrictions above are enforced after pppprrrrooooffffiiiilllleeee....sssshhhh and the
  2539.           EEEENNNNVVVV files are interpreted.
  2540.  
  2541.           When a command to  be  executed  is  found  to  be  a  shell
  2542.           procedure,  _r_s_h  invokes  _s_h  to  execute  it.   Thus, it is
  2543.           possible to provide to the end-user  shell  procedures  that
  2544.           have  access  to the full power of the standard shell, while
  2545.           imposing a limited menu of  commands;  this  scheme  assumes
  2546.           that   the   end-user   does  not  have  write  and  execute
  2547.           permissions in the same directory.
  2548.  
  2549.           The net effect of these rules is  that  the  writer  of  the
  2550.           pppprrrrooooffffiiiilllleeee....sssshhhh  has  complete  control  over  user  actions,  by
  2551.           performing guaranteed setup actions and leaving the user  in
  2552.           an appropriate directory (probably _n_o_t the login directory).
  2553.  
  2554.           The system  administrator  often  sets  up  a  directory  of
  2555.           commands  (i.e.,  ////uuuussssrrrr////rrrrbbbbiiiinnnn)  that  can be safely invoked by
  2556.  
  2557.  
  2558.  
  2559.      Page 40                                        (printed 12/15/92)
  2560.  
  2561.  
  2562.  
  2563.  
  2564.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2565.  
  2566.  
  2567.  
  2568.           _r_s_h.  Some systems also provide a restricted editor _r_e_d.
  2569.  
  2570.      EEEEXXXXIIIITTTT SSSSTTTTAAAATTTTUUUUSSSS
  2571.           Errors detected by the shell, such as syntax  errors,  cause
  2572.           the shell to return a non-zero exit status.  If the shell is
  2573.           being used non-interactively execution of the shell file  is
  2574.           abandoned.   Otherwise, the shell returns the exit status of
  2575.           the last command executed (see also the eeeexxxxiiiitttt command above).
  2576.  
  2577.      FFFFIIIILLLLEEEESSSS
  2578.           /etc/profile.sh
  2579.           $HOME/profile.sh
  2580.           $HOME/history.sh.
  2581.           $TMP/sh*.tmp
  2582.           ??/sh.ini
  2583.  
  2584.      CCCCRRRRIIIITTTTIIIICCCCAAAALLLL EEEERRRRRRRROOOORRRRSSSS
  2585.           The Shell provide a Critical Error  Handler  (Interrupt  24)
  2586.           similar  to  the standard MSDOS handler.  In addition to the
  2587.           standard message, the handler  also  displays  the  Extended
  2588.           Error Code information in hexadecimal.
  2589.  
  2590.      LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS
  2591.           Under MS-DOS, any TSR  (Terminate  Stay  Resident)  programs
  2592.           must be loaded before loading _S_h as the shell will overwrite
  2593.           the TSR when it reloads itself after swapping out.
  2594.  
  2595.           The shell checks for valid DOS filenames (single dot, not at
  2596.           the beginning).  Invalid dots are converted to ~~~~.  A warning
  2597.           message is displayed if the shell detects  an  invalid  file
  2598.           name.
  2599.  
  2600.           Under OS/2, asynchronous commands are supported to a degree.
  2601.           However,  this  is very limited because of the nature of the
  2602.           forking commands under OS/2 which does not  match  the  UNIX
  2603.           model.   This  difference  has  also meant that pipes (as in
  2604.           MS-DOS) are implemented as files and not  OS/2  pipes.   For
  2605.           more details, see the source code.
  2606.  
  2607.           However, real OS/2 pipes can be used with  care  for  simple
  2608.           pipelines  which  do  not create sub-shells or assume that a
  2609.           real child shell is  created  because  the  shell  does  not
  2610.           create  child,  it  simulates  their  creating  in  the same
  2611.           process.  This is because there is no fork under OS/2.   See
  2612.           the sssseeeetttt command on how to enable/disable real pipes.
  2613.  
  2614.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  2615.           cd(1), env(1), test(1), umask(1).
  2616.           dup(2),  exec(2),  pipe(2),  signal(2),  umask(2),  wait(2),
  2617.           strtol(3),   profile(4),   environ(5)  in  the  _U_N_I_X  _S_y_s_t_e_m
  2618.           _P_r_o_g_r_a_m_m_e_r _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l.
  2619.  
  2620.  
  2621.  
  2622.  
  2623.      Page 41                                        (printed 12/15/92)
  2624.  
  2625.  
  2626.  
  2627.  
  2628.      SSSSHHHH((((1111LLLL))))   MMMMSSSS----DDDDOOOOSSSS ---- OOOOSSSS////2222 VVVVeeeerrrrssssiiiioooonnnn 2222....1111 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd))))    SSSSHHHH((((1111LLLL))))
  2629.  
  2630.  
  2631.  
  2632.      AAAACCCCKKKKNNNNOOOOWWWWLLLLEEEEDDDDGGGGEEEEMMMMEEEENNNNTTTTSSSS
  2633.           This program is based  on  ideas,  code  or  parts  of  code
  2634.           developed by:
  2635.  
  2636.           David Korn and Steve Bourne (the original ideas)
  2637.           Charles Forsyth (the original source  for  the  MINIX  Shell
  2638.           program)
  2639.           Erik Baalbergen (the code for the test function)
  2640.           Paul Falstad (the code for the maths functions)
  2641.  
  2642.           In addition, a very large number  of  people  (too  many  to
  2643.           mention) who have been involved in testing and debugging the
  2644.           program.
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.      Page 42                                        (printed 12/15/92)
  2688.  
  2689.